java集成prometheus、grafana、loki 实现服务监控日志监控

docker安装loki

docker pull grafana/loki  

docker run -d --name loki -p 3100:3100 -v yourLog:/usr/share/loki/distributed/storage grafana/loki 

java 集成推送到loki

如果是java8添加pom

<dependency>
    <groupId>com.github.loki4j</groupId>
    <artifactId>loki-logback-appender-jdk8</artifactId>
    <version>1.5.1</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.14</version>
</dependency>

logback里添加

<appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender">
    <batchMaxItems>100</batchMaxItems>
    <batchTimeoutMs>10000</batchTimeoutMs>
    <verbose>true</verbose>
    <http class="com.github.loki4j.logback.ApacheHttpSender">
        <url>http://ip:3100/loki/api/v1/push</url>
    </http>
    <format>
        <label>
            <pattern>app=my-app,host=${HOSTNAME},level=%level</pattern>
        </label>
        <message>
            <pattern>l=%level h=${HOSTNAME} c=%logger{20} t=%thread | %msg %ex %n</pattern>
        </message>
        <sortByTime>true</sortByTime>
    </format>
</appender>

 <root level="INFO">
    <appender-ref ref="LOKI"/>
</root>

如果是java11及以上


<dependency>
    <groupId>com.github.loki4j</groupId>
    <artifactId>loki-logback-appender</artifactId>
    <version>1.5.1</version>
</dependency>

<appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender">
    <http>
        <url>http://localhost:3100/loki/api/v1/push</url>
    </http>
    <format>
        <label>
            <pattern>app=my-app,host=${HOSTNAME}</pattern>
        </label>
        <message>
            <pattern>%-5level [%.5(${HOSTNAME})] %.10thread %logger{20} | %msg %ex</pattern>
        </message>
    </format>
</appender>

<root level="DEBUG">
    <appender-ref ref="LOKI" />
</root>

上面是java内集成推送到loki,也可以使用promtail采集日志文件,只不过这样不太方便分布式
安装promatail

docker安装promtail

 docker pull grafana/promtail

 docker run -d --name promtail -p 9080:9080 -v yourLog:/var/log  --link loki grafana/promtail


然后随便调几个接口再grafana里查看

docker 安装grafana

docker pull grafana/grafana 

docker run -d --name=grafana -p 3000:3000 grafana/grafana 

打开网址 ip:3000

数据源 选loki url为ip:3100 点save

然后点探索 选择输入源 点运行查询就能看到

然后是java集成prometheus

docker安装prometheus

docker pull prom/prometheus

mkdir -p ~/prometheus/data # 创建本地目录用于存放数据
mkdir -p ~/prometheus/config # 创建目录存放配置文件

# 如果您还没有配置文件,可以从Prometheus官网下载一个基本配置作为起点
# wget https://raw.githubusercontent.com/prometheus/prometheus/main/config/prometheus.yml -O ~/prometheus/config/prometheus.yml

docker run -d --name prometheus \
  -p 9090:9090 \          # 映射端口:容器的9090端口映射到主机的9090端口
  -v ~/prometheus/data:/prometheus \  # 映射数据卷
  -v ~/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \  # 映射配置文件
  prom/prometheus:v2.39.0 \  # 使用刚下载的镜像
  --config.file=/etc/prometheus/prometheus.yml # 指定配置文件路径
  

java集成暴露prometheus指标


pom添加依赖


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

yml文件添加配置


spring.application.name=my-app
management.metrics.tags.application=${spring.application.name}
management.endpoints.web.exposure.include=*
# 暴露prometheus端点
management.metrics.export.prometheus.enabled=true

application类里添加bean


@Bean
MeterRegistryCustomizer<PrometheusMeterRegistry> metrics() {
    return registry -> registry.config().commonTags("application", "my-app");
}

然后就可以访问java应用的接口指标了
javaip:java端口/actuator/prometheus


接着配置prometheus采集java指标

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.

  - job_name: 'myapp'
    # 采集地址
    metrics_path: '/actuator/prometheus'
    # 目标服务器
    static_configs:
    - targets: ['javaip:java端口']
    
然后再grafana里面添加prometheus的数据源就可以看到
http://prometheusip:9090

然后点仪表盘 导入 17175 就可以查看模板了


  
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值