原创

性能监控平台全栈式部署教程

一、Zipkin安装

【安装】
curl -sSL  https://zipkin.io/quickstart.sh | bash -s

【启动】
启动方式1:nohup java -jar /env/zipkin.jar --STORAGE_TYPE=mysql --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=123456 --MYSQL_HOST=172.16.74.216 --MYSQL_TCP_PORT=3306 > zipkin.file 2>logs.error &
启动方式2:java -jar zipkin
访问地址:172.16.74.215:9411/zipkin/

【SprintBoot项目】
<!-- 在poms.xml引入zipkin 的依赖,需对应Springboot版本 -->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-zipkin</artifactId>
   <version>2.1.0.RELEASE</version>
</dependency>

【配置】
# 在springboot项目中的yml/properties文件中配置
spring.zipkin.base-url=http://172.16.74.215:9411
spring.zipkin.sender.type=web
spring.zipkin.sleuth.sampler.probability=1.0

【maven central repository】
https://central.sonatype.com/artifact/org.springframework.cloud/spring-cloud-starter-sleuth/3.1.8

二、Prometheus安装

安装Prometheus
下载地址:https://prometheus.io/download/
解压命令:tar xf prometheus-2.44.0.linux-amd64.tar.gz
移动安装目录:mv prometheus-2.44.0.linux-amd64 /usr/local/prometheus

【设置系统开机启动】
添加prometheus至systemd:cd /etc/systemd/system/
touch prometheus.service

[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System

[Service]
ExecStart=/usr/local/prometheus/prometheus \
    --config.file=/usr/local/prometheus/prometheus.yml \
    --storage.tsdb.path=/usr/local/prometheus/data \
    --web.listen-address=:9090

[Install]
WantedBy=multi-user.target

【启动Prometheus服务】
启动:service prometheus start
访问地址:http://172.16.74.215:9090

【配置Linux/mysql/redis/mongodb监控】
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'node-215'
    static_configs:
      - targets: ['172.16.74.215:9100']    
  - job_name: mysqld-216
    static_configs:
      - targets: ['172.16.74.216:9104']

三、Grafana安装

【安装Grafana】
sudo yum install -y https://dl.grafana.com/oss/release/grafana-9.5.2-1.x86_64.rpm

【启动Grafana服务】
systemctl restart grafana-server.service
查看:http://172.16.74.215:3000
用户名/密码:admin/admin123

【配置中文】
在grafana默认配置 /etc/grafana/grafana.ini 中,将default_language = en-US改为 zh-Hans即可,不过存在部分翻译不完全

【配置模板ID】
1、监控容器,推荐ID
3146:Kubernetes Pods
8685:K8s Cluster Summary
10000:Cluster Monitoring for Kubernetes
8588:Kubernetes Deployment Statefulset Daemonset metrics
315:Kubernetes cluster monitoring (via Prometheus)

2、Linux服务器监控模板ID:
8919:1 Node Exporter Dashboard 22/04/13 ConsulManager自动同步版
9276:1.主机基础监控(cpu,内存,磁盘,网络)

3、mysql监控
7362

4、Windows服务器监控模板ID:
10467

5、监控协议http/icmp/tcp/dns/
9965:Blackbox Exporter Dashboard

6、nginx
9614

7、influxdb
13644

四、安装influxdb

【安装influxdb】
下载最新的InfluxDB开源(OSS)版本
安装命令:sudo yum localinstall influxdb2-2.7.1.x86_64.rpm
InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据

【访问influxdb地址】
访问地址:http://172.16.74.215:8086/
注册用户:admin/abc123456

【配置influxdb】
组织:tester
backer:jmeter
Api tonken: oh99CNb1HRAG85I7f8ApyEwWX0ekjwKbDx-evbR9TV8QqvIsyt0QvCk40r51cdS1OShuiPTCdbdWwGGVbkfvxw==

【配置Jmeter插件】
Jmeter插件:https://github.com/mderevyankoaqa/jmeter-influxdb2-listener-plugin/releases, 需要JDK,java11环境

五、安装skywarking

【可以用来干啥】
1、发现系统耗时或者说瓶颈在哪里。
2、发现各系统之间的调用关系。
3、监控服务异常。
4、排查系统故障。

【普通安装】
主下载页:http://skywalking.apache.org/downloads/
1、到官网下载SkyWalking主程序:https://dlcdn.apache.org/skywalking/8.9.1/apache-skywalking-apm-8.9.1.tar.gz
2、解压,其中webapp目录为web-ui位置,可以在其中的/usr/local/skywalking/webapp/webapp.yaml文件修改web-ui端口(默认为8080)等参数。
3、启动SkyWalking的web-ui及指标收集进程(指标数据用数据库存储,默认使用的是H2):
    sh /usr/local/skywalking/bin/startup.sh
4、安装目录:
/usr/local/skywalking/

【如何使用】
1、通过http://127.0.0.1:8080/访问web-ui

2、skywalking-oap是skywalking日志收集服务,默认开放3个端口:
12800 (给skywalking-ui提供接口访问监控数据)和 
11800 (收集接入skywalking监控的服务的日志信息),
8080  (skywalking-ui 是skywalking的前端)

3、启动成功后会启动两个服务,一个是 skywalking-oap-server,一个是 skywalking-web-ui,
skywalking-oap-server 服务启动后会暴露 11800 和 12800 两个端口,分别为收集监控数据的端口 11800 和接受前端请求的端口 12800,修改端口可以修改 config/applicaiton.yml

【监控普通jar包】
1、java -javaagent:/usr/local/skywalking/agent/skywalking-agent.jar -jar case-server-1.0.jar &

2、nohup java -javaagent:/usr/local/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=case-server -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.logging.file_name=case-service_api.log -jar /opt/case-server-1.0.jar > /opt/logs/log-web.file 2>/opt/logs/log-web.error &

# 参数解释 
-Dskywalking.agent.service_name: 本应用在skywalking中的名称 
-Dskywalking.collector.backend_service: skywalking 服务端地址,默认端口是 11800 
-Dskywalking.logging.file_name:日志文件

SkyWalking 配置文件说明
config/application.yml : 收集器服务端配置
webapp/webapp.yml : 配置 Web 的端口及获取数据的 OAP(Collector)的IP和端口
agent/config/agent.config : 配置 Agent 信息,如 Skywalking OAP(Collector)的地址和名称


【skywalking配置storage的elasticsearch】
config/application.yml


Skywalking 告警通知
skywalking 告警的核心由一组规则驱动,这些规则定义在 config/alarm-settings.yml 文件中,告警规则的定义分为三部分:
1、告警规则:它们定义了应该如何触发度量警报,应该考虑什么条件;
2、网络钩子(Webhook}:当警告触发时,哪些服务终端需要被通知;
3、gRPC 钩子:远程 gRPC 方法的主机和端口,告警触发后调用;
为了方便,skywalking 发行版中提供了默认的 alarm-setting.yml 文件,包括一些规则,每个规则有英文注释,可以根据注释得知每个规则的作用:
1、在最近 10 分钟的 3 分钟内服务平均响应时间超过 1000ms
2、最近 10 分钟内,服务成功率在 2 分钟内低于 80%
3、服务实例的响应时间在过去 10 分钟的 2 分钟内超过 1000ms
4、数据库访问{name}的响应时间在过去 10 分钟的 2 分钟内超过 1000ms


【JAVA项目添加skywalking日志】
在pom.xml文件中添加以下依赖
<dependency>
   <groupId>org.apache.skywalking</groupId>
   <artifactId>apm-toolkit-logback-1.x</artifactId>
   <version>8.8.0</version>
</dependency>

部署:https://blog.51cto.com/lidabai/5659576
日志:https://www.leftso.com/article/955.html


Skywalking 跨多个微服务跟踪
Prepare the nacos provider in cluster module

六、Elasticsearch安装

【下载】
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz

用户组
#创建elasticsearch用户组
groupadd elasticsearch
#创建新用户elasticsearch ,设置用户组为elasticsearch ,密码123456
useradd elasticsearch -g elasticsearch -p 123456
#授权,更改/elasticsearch-7.14.0文件夹所属用户及用户组为elasticsearch:elasticsearch
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-7.13.4/
chown -R elasticsearch:elasticsearch /usr/local/data
chown -R elasticsearch:elasticsearch /usr/local/logs
#切换用户elasticsearch,用户/密码是elsearch/123456
su  elasticsearch  


配置文件设置
文件:/env/elasticsearch-7.13.4/config/elasticsearch.yml

cluster.name: my-application
node.name: node-1
path.data: /usr/local/data
path.logs: /usr/local/logs
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
# 需要开启跨域才能给elasticsearch-head,kibana等连接
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

重要配置项说明
cluster.name:集群名称,同一ES集群名称必须相同;
node.name:集群中当前节点名称。建议命名较高区分度,如:当前节点hostname,hostip等
path.data:ES实例存放数据目录;注:建议生产环境数据目录与应用程序隔离
path.logs:ES实例存放日志目录;注:建议生产环境数据目录与应用程序隔离
network.host:当前实例绑定的ip地址,注:如未绑定则无法通过ip地址访问
http.port:ES实例对外提供REST服务的端口,默认9200
transport.port:ES实例内部通信端口,默认9300
discovery.seed_hosts:数组形式存储ES集群节点信息,多个以逗号分隔
cluster.initial_master_nodes:ES集群启动时,引导默认的master节点,注:仅在集群第一次启动时候此配置有效。

目录授权
chown -R elsearch:elsearch data
chown -R elsearch:elsearch logs

修改启动内存
es实例启动默认需要4G内存,为了避免启动后出现内存不足异常,配置es实例2G内存。
# 配置文件:/elasticsearch-7.13.4/config/vim jvm.options
## -Xms4g
## -Xmx4g
修改为:(根据实际系统内存。注:不要留空格)
-Xms2g
-Xmx2g

启动elasticsearch
以后台方式启动:/env/elasticsearch-7.13.4/bin/elasticsearch -d
关闭后台运行的es实例,查看es进程pid并杀死进程
ps -ef|grep elasticsearch
netstat -lntup|grep 9200

安装成功
在浏览器中打开:http://172.16.74.215:9200/,如下,则证明已经正常启动

七、node/mysqld/redis_exporter安装

insert into mysql.user(Host,User,Password) values('localhost','mysqld_exporter',password('123456'));
flush privileges;--创建完需要刷新
修改mysql密码:ALTER USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'Runoon2021#';

(1)mysqld_exporter安装
1、安装:https://prometheus.io/download/#mysqld_exporter
2、启动:nohup /usr/local/exporter/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/exporter/mysqld_exporter/my.cnf &

配置/usr/local/exporter/mysqld_exporter/my.cnf
[client]
user=root
password=123456
host=localhost
port=3306


(2)node_exporter安装
1、设置用户组
root@prometheus-service prometheus]# groupadd prometheus
[root@prometheus-service prometheus]# useradd -g prometheus -s /sbin/nologin prometheus
2、下载地址:https://prometheus.io/download/#node_exporter
3、解压安装并且改名
[root@node-exporters opt]# tar xf node_exporter-1.3.1.linux-armv7.tar.gz -C /usr/local/
[root@node-exporters opt]# mv /usr/local/node_exporter-1.3.1.linux-armv7/  /usr/local/node_exporter
4、设置node_exporter开机启动
添加node_exproter至systemd:cd /etc/systemd/system/
touch  node_exporter.service

[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/usr/local/node_exporter/node_exporter \
          --web.listen-address=0.0.0.0:9100 \
          --collector.systemd \
          --collector.systemd.unit-whitelist=(sshd|nginx).service
Restart=on-failure
[Install]
WantedBy=multi-user.target

5、启动服务
service node_exporter  restart


(3)redis_exporter
安装:
启动:

(4)mongodb_exporter
安装: https://github.com/dcu/mongodb_exporter/releases
启动:nohup mongodb_exporter --mongodb.uri=mongodb://127.0.0.1:27017 &
查看:http://172.16.74.62:9216/metrics
安装教程:https://blog.51cto.com/root/3036719
正文到此结束
该篇文章的评论功能已被站长关闭
本文目录