powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring rrd monitor или мониторинг здоровья сайта
8 сообщений из 8, страница 1 из 1
Spring rrd monitor или мониторинг здоровья сайта
    #38785013
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !

Есть сайт с набором rest url ресурсов , что хочется - хочется мониторить здоровье сайта : к примеру видеть количество активных сессий, время за которое генерится ответ итд.

какие есть общедоступные средства мониторинга ?

первое что пришло в голову :

если бы это был java ee проект - то на каждый интересующий меня сервлет можно было бы создать по фильтру и в методе doFilter
засекать время и писать его в базу.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@WebFilter("/RequestLoggingFilter")
public class RequestLoggingFilter implements Filter {
 
    private ServletContext context;

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        long t1 = time1;
        chain.doFilter(request, response);
        long t2 = time2;

    // пишем время в базу 




какие средства для этого предлагает Spring?


Чем потом можно вывести эту информацию в виде графика?




как я понимаю есть два подхода , или даже три?

Interceptors vs Aspects in Spring?


Handler Interceptors - что , наверное является аналогом фильтра .


и второй подход : через @Aspect - и реализацию прокси invocation.proceed();
с @Around("@annotation(org.springframework.web.bind.annotation.RequestMapping)") ?

какой из способов более предпочтителен ? более легковесный итд?

может есть уже готовые библиотеки?
...
Рейтинг: 0 / 0
Spring rrd monitor или мониторинг здоровья сайта
    #38785086
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1как я понимаю есть два подхода , или даже три?
4. провайдер и его панель админа
5. монитор в аппСервере - контейнере
...
Рейтинг: 0 / 0
Spring rrd monitor или мониторинг здоровья сайта
    #38785812
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если это jetty или томкат ?

Делаю все тоже самое что и ниже через xml , но аннотация

@Before выполняется ,а вот Around нет , либо игнорируется либо вылетает NPE

вот какой тест у меня проходит :

но если конфигурировать через xml то нет :(



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
            public class NewMain {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws InterruptedException {
         ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
	    CustomerBo obj = (CustomerBo) context.getBean("customerBo");
 
            for (int i = 0; i < 10; i++) {
            obj.addCustomerAround("Spring3 Java Config");
            Thread.sleep(1000);
        }
	    
    }
    
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Aspect
public class LoggingAspect {

    @Around("execution(* ru.appaspectj.CustomerBo.*(..))")
    public void logAround(ProceedingJoinPoint joinPoint) throws Throwable {
        long time = System.currentTimeMillis();
        joinPoint.proceed();
        System.out.println("total time : " + (System.currentTimeMillis() - time) + " ms");
    }

}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public interface CustomerBo {
 
	void addCustomer();
 
	String addCustomerReturnValue();
 
	void addCustomerThrowException() throws Exception;
 
	void addCustomerAround(String name);
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {

    @Bean(name = "customerBo")
    public CustomerBo helloWorld() {
        return new CustomerBoImpl();
    }

     @Bean
     public LoggingAspect myAspect() {
         return new LoggingAspect();
     }
    
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class CustomerBoImpl implements CustomerBo {
 
	public void addCustomer(){
		System.out.println("addCustomer() is running ");
	}
 
	public String addCustomerReturnValue(){
		System.out.println("addCustomerReturnValue() is running ");
		return "abc";
	}
 
	public void addCustomerThrowException() throws Exception {
		System.out.println("addCustomerThrowException() is running ");
		throw new Exception("Generic Error");
	}
 
	public void addCustomerAround(String name){
		System.out.println("addCustomerAround() is running, args : " + name);
	}
}



pom.xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>AppAspectj</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <spring.version>4.1.1.RELEASE</spring.version>
    </properties>
    
    
  
 
	<dependencies>
 
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
 
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
 
		<!-- Spring AOP + AspectJ -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
 
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.8.2</version>
		</dependency>
 
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.2</version>
		</dependency>
 
	</dependencies>
</project>


...
Рейтинг: 0 / 0
Spring rrd monitor или мониторинг здоровья сайта
    #38785866
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1а если это jetty или томкат ?
а если у тебя сервлет работает из кэша за 0,00001 сек.
Ты в БД как будешь писать за 0,1 сек?
Не знаю томкат, но у GlassFish есть монитор. И у моего прова тоже.
imho я бы не нагружал ИС админскими приблудами.
...
Рейтинг: 0 / 0
Spring rrd monitor или мониторинг здоровья сайта
    #38786319
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
и я об этом ... что не очень нагружать

но сервлет не может работать за 0,00001 сек.!? или может ?

простой тест jetty tomcat galssfish - что просто отдать 1кб массив это порядка 16 ms/

лучшее время за которое гласфиш отдает по http 1 кб - порядка 20 ms, soket в java отдает за 0.4 ms это максимум для java/

можно логирование - запись в базу - делать в другом треде - потоке ... асинхронно. как вариант .
...
Рейтинг: 0 / 0
Spring rrd monitor или мониторинг здоровья сайта
    #38786331
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
можно и в оперативку писать...можно и API самого сервера изучить, посмотреть.
Мне это неинтересно, т.к. это работа админа, а не программиста. Я просто GlassFish взял и всё.
imho
...
Рейтинг: 0 / 0
Spring rrd monitor или мониторинг здоровья сайта
    #38787593
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

там как правило среднее время -т.е идет расчет раз в 10 секунд дернули и посмотрели ...

мне же хочется реально все видеть ...

как вариант все расчета можно делать асинхронно.

так же можно выводить время выполнения в логи нгинса или апача ,у последнего есть ключ - проставив его можно видеть время выполнения запросов.
...
Рейтинг: 0 / 0
Spring rrd monitor или мониторинг здоровья сайта
    #38787722
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
лично мне гораздо интереснее выполнить _нагрузочное_ тестирование сайта.
А потом уже, кричать караул и изучать \требовать полноценный аппСервер с мониторингом.
Т.к. этот велосипед или поделие не ответит на вопросы почему сайт лежит(.
Например, из за того что maxthreadpoolsize был низким по умолчанию, сайт зависал).
Или ответ на то, сколько раз клиентам отправлялся HTTP.error (код выше 400)
Т.е. писать свой монитор равнозначно написанию своего логгера.
Есть более красивые _прикладные_ задачи ) imho
Системный программист - другая область)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring rrd monitor или мониторинг здоровья сайта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]