ELK组件部署
--------------------------------------------------------------------------
1、elasticsearch
Elasticsearch 部署手册
1. 环境准备
1.1 系统要求
- 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows Server 2016+ 或 macOS
- 内存:最低 4GB RAM,生产环境建议 8GB+
- 磁盘:至少 10GB 可用空间,SSD 更佳
- Java:OpenJDK 11 (Elasticsearch 7.x 及以上版本需要)
1.2 安装 Java
# CentOS 安装 OpenJDK 11
sudo yum install java-11-openjdk-devel -y
# Ubuntu 安装 OpenJDK 11
sudo apt update && sudo apt install openjdk-11-jdk -y
# 验证 Java 安装
java -version
2. Elasticsearch 安装
2.1 下载 Elasticsearch
# 下载最新版本 (可从官网获取最新版本号)
ES_VERSION=8.10.4
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ES_VERSION-linux-x86_64.tar.gz
# 解压
tar -xzf elasticsearch-$ES_VERSION-linux-x86_64.tar.gz
sudo mv elasticsearch-$ES_VERSION /usr/share/elasticsearch
2.2 创建专用用户
# 创建用户组和用户
sudo groupadd elasticsearch
sudo useradd -g elasticsearch elasticsearch
# 设置权限
sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch
2.3 系统配置优化
# 调整虚拟内存
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
# 调整文件描述符限制
echo "elasticsearch soft nofile 65536" | sudo tee -a /etc/security/limits.conf
echo "elasticsearch hard nofile 65536" | sudo tee -a /etc/security/limits.conf
3. 配置 Elasticsearch
3.1 基本配置
sudo vi /usr/share/elasticsearch/config/elasticsearch.yml
:# 集群名称
cluster.name: my-elasticsearch-cluster
# 节点名称
node.name: node-1
# 数据和日志存储路径
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# 网络设置 - 允许外部访问
network.host: 0.0.0.0
# HTTP 端口
http.port: 9200
# 初始主节点
cluster.initial_master_nodes: ["node-1"]
# 跨域设置 (如果需要前端访问)
http.cors.enabled: true
http.cors.allow-origin: "*"
3.2 创建数据和日志目录
sudo mkdir -p /var/lib/elasticsearch /var/log/elasticsearch
sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch /var/log/elasticsearch
4. 启动 Elasticsearch
4.1 直接启动 (测试用)
# 切换到 elasticsearch 用户
sudo su - elasticsearch
# 启动
/usr/share/elasticsearch/bin/elasticsearch
4.2 作为服务启动 (生产环境)
# 创建服务文件
sudo vi /etc/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
User=elasticsearch
Group=elasticsearch
Environment="ES_JAVA_OPTS=-Xms512m -Xmx512m"
ExecStart=/usr/share/elasticsearch/bin/elasticsearch
Restart=always
WorkingDirectory=/usr/share/elasticsearch
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
# 检查状态
sudo systemctl status elasticsearch
5. 验证安装
# 检查 Elasticsearch 是否运行
curl -X GET "http://localhost:9200/"
{
"name" : "node-1",
"cluster_name" : "my-elasticsearch-cluster",
"cluster_uuid" : "xxxxxxxxxxxxxxxxxx",
"version" : {
"number" : "8.10.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "xxxxxxxxxxxxxxxxxx",
"build_date" : "2023-10-11T10:02:17.390849895Z",
"build_snapshot" : false,
"lucene_version" : "9.7.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
6. 安全配置 (生产环境必备)
6.1 启用安全功能
elasticsearch.yml
,添加:xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
6.2 设置密码
# 切换到 elasticsearch 用户
sudo su - elasticsearch
# 运行密码设置工具
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
- elastic (超级管理员)
- apm_system
- kibana_system
- logstash_system
- beats_system
- remote_monitoring_user
7. 集群配置 (可选)
elasticsearch.yml
中添加:# 集群名称 (所有节点必须相同)
cluster.name: my-elasticsearch-cluster
# 每个节点的唯一名称
node.name: node-2 # 第二个节点
# node.name: node-3 # 第三个节点
# 主节点发现
discovery.seed_hosts: ["node1-ip", "node2-ip", "node3-ip"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
8. 常用命令
# 查看集群健康状态
curl -u elastic:your-password -X GET "https://localhost:9200/_cluster/health?pretty"
# 查看节点信息
curl -u elastic:your-password -X GET "https://localhost:9200/_cat/nodes?v"
# 重启 Elasticsearch
sudo systemctl restart elasticsearch
# 查看日志
sudo tail -f /var/log/elasticsearch/my-elasticsearch-cluster.log
9. 卸载 Elasticsearch
# 停止服务
sudo systemctl stop elasticsearch
sudo systemctl disable elasticsearch
# 删除文件
sudo rm -rf /usr/share/elasticsearch
sudo rm -rf /var/lib/elasticsearch
sudo rm -rf /var/log/elasticsearch
sudo rm -f /etc/systemd/system/elasticsearch.service
# 删除用户和组
sudo userdel elasticsearch
sudo groupdel elasticsearch
10. 注意事项
- 生产环境中,建议为 Elasticsearch 配置专门的服务器或虚拟机
- 根据数据量和查询负载调整 JVM 堆大小(通常设置为系统内存的 50%,但不超过 31GB)
- 定期备份 Elasticsearch 数据
- 监控集群健康状态和性能指标
- 遵循 Elasticsearch 官方的安全最佳实践
--------------------------------------------------------------------------
2、logstash
Logstash 部署步骤
1. 环境准备
1.1 系统要求
- 与 Elasticsearch 兼容的操作系统(Linux、Windows、macOS)
- 至少 2GB 内存(生产环境建议 4GB+)
- 已安装 Elasticsearch(建议与 Logstash 版本一致)
- Java 环境(OpenJDK 11)
1.2 验证 Java 环境
java -version
2. 安装 Logstash
2.1 下载 Logstash
# 指定与 Elasticsearch 相同的版本
ES_VERSION=8.10.4
wget https://artifacts.elastic.co/downloads/logstash/logstash-$ES_VERSION-linux-x86_64.tar.gz
# 解压
tar -xzf logstash-$ES_VERSION-linux-x86_64.tar.gz
sudo mv logstash-$ES_VERSION /usr/share/logstash
2.2 创建专用用户
# 使用已创建的 elasticsearch 组
sudo useradd -g elasticsearch logstash
# 设置目录权限
sudo chown -R logstash:elasticsearch /usr/share/logstash
3. 配置 Logstash
3.1 创建系统服务
sudo vi /etc/systemd/system/logstash.service
[Unit]
Description=Logstash
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
User=logstash
Group=elasticsearch
Environment="LS_JAVA_OPTS=-Xms1g -Xmx1g"
ExecStart=/usr/share/logstash/bin/logstash
Restart=always
WorkingDirectory=/usr/share/logstash
[Install]
WantedBy=multi-user.target
3.2 基本配置
sudo vi /usr/share/logstash/config/logstash.yml
# 节点名称
node.name: logstash-node-1
# 数据存储路径
path.data: /var/lib/logstash
# 管道配置路径
path.config: /usr/share/logstash/pipeline
# 日志路径
path.logs: /var/log/logstash
# Elasticsearch 输出配置(可选,也可在管道配置中指定)
xpack.monitoring.elasticsearch.hosts: ["http://localhost:9200"]
xpack.monitoring.enabled: true
3.3 创建数据和日志目录
sudo mkdir -p /var/lib/logstash /var/log/logstash
sudo chown -R logstash:elasticsearch /var/lib/logstash /var/log/logstash
4. 创建第一个管道配置
sudo vi /usr/share/logstash/pipeline/logstash.conf
input {
file {
path => "/var/log/*.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
# 示例:解析日志中的时间戳
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:logtime} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
}
date {
match => [ "logtime", "ISO8601" ]
target => "@timestamp"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "system-logs-%{+YYYY.MM.dd}"
# 如果 Elasticsearch 启用了安全验证
# user => "elastic"
# password => "your-password"
}
# 同时输出到控制台便于调试
stdout { codec => rubydebug }
}
5. 启动 Logstash
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动 Logstash
sudo systemctl start logstash
# 设置开机自启
sudo systemctl enable logstash
# 检查状态
sudo systemctl status logstash
6. 验证部署
6.1 检查服务状态
sudo systemctl status logstash
6.2 查看日志
sudo tail -f /var/log/logstash/logstash-plain.log
6.3 测试管道配置
# 切换到 logstash 用户
sudo su - logstash
# 测试配置文件
/usr/share/logstash/bin/logstash --config.test_and_exit -f /usr/share/logstash/pipeline/logstash.conf
6.4 手动运行(调试用)
/usr/share/logstash/bin/logstash -f /usr/share/logstash/pipeline/logstash.conf
7. 常用配置示例
7.1 从 Syslog 收集数据
input {
syslog {
port => 514
type => "syslog"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "syslog-%{+YYYY.MM.dd}"
}
}
7.2 从 Kafka 消费数据
input {
kafka {
bootstrap_servers => "kafka-host:9092"
topics => ["logs-topic"]
group_id => "logstash-consumer"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "kafka-logs-%{+YYYY.MM.dd}"
}
}
8. 卸载 Logstash
# 停止服务
sudo systemctl stop logstash
sudo systemctl disable logstash
# 删除文件
sudo rm -rf /usr/share/logstash
sudo rm -rf /var/lib/logstash
sudo rm -rf /var/log/logstash
sudo rm -f /etc/systemd/system/logstash.service
# 删除用户
sudo userdel logstash
- 确保 Logstash 与 Elasticsearch 版本兼容
- 根据数据量调整 JVM 堆大小(在服务文件中设置 LS_JAVA_OPTS)
- 复杂的管道配置建议拆分为多个配置文件
- 生产环境中建议为 Logstash 配置监控
- 对于高负载场景,可以部署多个 Logstash 实例实现负载均衡
--------------------------------------------------------------------------
3、kibana
Kibana 部署步骤
1. 环境准备
1.1 系统要求
- 与 Elasticsearch 兼容的操作系统(Linux、Windows、macOS)
- 至少 2GB 内存(生产环境建议 4GB+)
- 已安装 Elasticsearch(必须与 Kibana 版本一致)
- 浏览器要求:最新版本的 Chrome、Firefox、Safari 或 Edge
1.2 验证 Elasticsearch 运行状态
curl -u elastic:your-password -X GET "https://localhost:9200/_cluster/health?pretty"
green
或 yellow
。2. 安装 Kibana
2.1 下载 Kibana
# 指定与 Elasticsearch 相同的版本
ES_VERSION=8.10.4
wget https://artifacts.elastic.co/downloads/kibana/kibana-$ES_VERSION-linux-x86_64.tar.gz
# 解压
tar -xzf kibana-$ES_VERSION-linux-x86_64.tar.gz
sudo mv kibana-$ES_VERSION /usr/share/kibana
2.2 设置权限
# 使用已创建的 elasticsearch 用户和组
sudo chown -R elasticsearch:elasticsearch /usr/share/kibana
3. 配置 Kibana
3.1 创建系统服务
sudo vi /etc/systemd/system/kibana.service
[Unit]
Description=Kibana
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
User=elasticsearch
Group=elasticsearch
ExecStart=/usr/share/kibana/bin/kibana
Restart=always
WorkingDirectory=/usr/share/kibana
Environment="NODE_OPTIONS=--max-old-space-size=1024"
[Install]
WantedBy=multi-user.target
3.2 基本配置
sudo vi /usr/share/kibana/config/kibana.yml
# 服务器端口
server.port: 5601
# 允许外部访问
server.host: "0.0.0.0"
# 服务器名称
server.name: "kibana-server"
# Elasticsearch 地址
elasticsearch.hosts: ["https://localhost:9200"]
# Elasticsearch 认证信息(如果启用了安全功能)
elasticsearch.username: "kibana_system"
elasticsearch.password: "your-kibana-system-password"
# Elasticsearch SSL 配置
elasticsearch.ssl.verificationMode: "none" # 生产环境建议改为 "full"
# 日志路径
logging.dest: /var/log/kibana/kibana.log
# 地区设置
i18n.locale: "zh-CN" # 设置为中文
3.3 创建日志目录
sudo mkdir -p /var/log/kibana
sudo chown -R elasticsearch:elasticsearch /var/log/kibana
4. 启动 Kibana
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动 Kibana
sudo systemctl start kibana
# 设置开机自启
sudo systemctl enable kibana
# 检查状态
sudo systemctl status kibana
5. 初始化设置
5.1 获取 enrollment token(当 Elasticsearch 启用安全功能时)
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
5.2 通过浏览器访问 Kibana
http://your-server-ip:5601
5.3 完成初始化
- 输入上一步获取的 enrollment token
- 按照提示完成 Kibana 与 Elasticsearch 的连接
- 使用 Elasticsearch 的
elastic
用户和密码登录
6. 验证部署
6.1 检查服务状态
sudo systemctl status kibana
6.2 查看日志
sudo tail -f /var/log/kibana/kibana.log
6.3 访问 Kibana 界面
7. 常用配置
7.1 配置索引模式
- 登录 Kibana 后,进入 "Stack Management" -> "Index Patterns"
- 点击 "Create index pattern"
- 输入索引模式(例如
system-logs-*
) - 选择时间字段(通常是
@timestamp
) - 点击 "Create index pattern"
7.2 配置安全设置(生产环境)
# 在 kibana.yml 中添加
elasticsearch.ssl.certificateAuthorities: [ "/path/to/ca.crt" ]
xpack.security.enabled: true
xpack.encryptedSavedObjects.encryptionKey: "a-32-character-or-longer-string"
8. 卸载 Kibana
# 停止服务
sudo systemctl stop kibana
sudo systemctl disable kibana
# 删除文件
sudo rm -rf /usr/share/kibana
sudo rm -rf /var/log/kibana
sudo rm -f /etc/systemd/system/kibana.service
9. 注意事项
- 确保 Kibana 与 Elasticsearch 版本完全一致,否则可能出现兼容性问题
- 生产环境中,建议为 Kibana 配置 HTTPS
- 对于大型部署,可以考虑部署多个 Kibana 实例并使用负载均衡器
- 定期备份 Kibana 的配置和索引模式
- 根据用户数量和使用场景调整 Kibana 的资源分配
--------------------------------------------------------------------------
4、filebeat
Filebeat 部署步骤
1. 环境准备
1.1 系统要求
- 支持的操作系统:Linux、Windows、macOS
- 轻量级资源需求:约 10-50MB 内存
- 已部署 Elasticsearch 和 Logstash(可选,Filebeat 可直接发送数据到 Elasticsearch)
- 与 Elasticsearch/Kibana/Logstash 版本保持一致
2. 安装 Filebeat
2.1 下载 Filebeat
# 指定与 Elastic Stack 相同的版本
ES_VERSION=8.10.4
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-$ES_VERSION-linux-x86_64.tar.gz
# 解压
tar -xzf filebeat-$ES_VERSION-linux-x86_64.tar.gz
sudo mv filebeat-$ES_VERSION-linux-x86_64 /usr/share/filebeat
2.2 创建专用用户和设置权限
# 创建用户和组
sudo groupadd filebeat
sudo useradd -g filebeat filebeat
# 设置权限
sudo chown -R filebeat:filebeat /usr/share/filebeat
3. 配置 Filebeat
3.1 创建系统服务
sudo vi /etc/systemd/system/filebeat.service
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Documentation=https://www.elastic.co/products/beats/filebeat
Wants=network-online.target
After=network-online.target
[Service]
User=filebeat
Group=filebeat
ExecStart=/usr/share/filebeat/filebeat -e -c /usr/share/filebeat/filebeat.yml
Restart=always
[Install]
WantedBy=multi-user.target
3.2 基本配置
sudo vi /usr/share/filebeat/filebeat.yml
3.2.1 配置输入(Input)
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
- /var/log/syslog
# 添加需要收集的日志路径
fields:
log_type: system_logs # 自定义字段,用于区分不同类型的日志
fields_under_root: false # 自定义字段是否放在根级别
# 可以配置多个输入源
- type: log
enabled: true
paths:
- /var/log/nginx/*.log
fields:
log_type: nginx_logs
3.2.2 配置输出(Output)
直接输出到 Elasticsearch:
output.elasticsearch:
hosts: ["https://localhost:9200"]
username: "elastic"
password: "your-elastic-password"
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
# SSL 配置
ssl:
enabled: true
verification_mode: none # 生产环境建议改为 full
输出到 Logstash(推荐用于复杂处理):
output.logstash:
hosts: ["localhost:5044"]
# 如果需要认证
# username: "logstash_system"
# password: "your-password"
3.2.3 配置 Kibana(用于导入仪表板)
setup.kibana:
host: "localhost:5601"
username: "kibana_system"
password: "your-kibana-password"
ssl:
verification_mode: none
3.2.4 配置索引生命周期管理(ILM)
setup.ilm.enabled: auto
setup.ilm.policy_name: "filebeat-policy"
4. 加载 Kibana 仪表板(可选)
# 切换到 filebeat 用户
sudo su - filebeat
# 加载仪表板
/usr/share/filebeat/filebeat setup --dashboards
5. 启动 Filebeat
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动 Filebeat
sudo systemctl start filebeat
# 设置开机自启
sudo systemctl enable filebeat
# 检查状态
sudo systemctl status filebeat
6. 验证部署
6.1 检查服务状态
sudo systemctl status filebeat
6.2 查看日志
sudo tail -f /var/log/filebeat/filebeat
6.3 测试配置
sudo su - filebeat
/usr/share/filebeat/filebeat test config -c /usr/share/filebeat/filebeat.yml
6.4 测试输出连接
/usr/share/filebeat/filebeat test output -c /usr/share/filebeat/filebeat.yml
7. 常用模块配置
7.1 启用 Nginx 模块
sudo su - filebeat
/usr/share/filebeat/filebeat modules enable nginx
vi /usr/share/filebeat/modules.d/nginx.yml
- module: nginx
access:
enabled: true
var.paths: ["/var/log/nginx/access.log*"]
error:
enabled: true
var.paths: ["/var/log/nginx/error.log*"]
7.2 启用 System 模块
/usr/share/filebeat/filebeat modules enable system
8. 卸载 Filebeat
# 停止服务
sudo systemctl stop filebeat
sudo systemctl disable filebeat
# 删除文件
sudo rm -rf /usr/share/filebeat
sudo rm -rf /var/log/filebeat
sudo rm -f /etc/systemd/system/filebeat.service
# 删除用户和组
sudo userdel filebeat
sudo groupdel filebeat
- 确保 Filebeat 与 Elastic Stack 其他组件版本一致
- 对于大规模部署,考虑使用配置管理工具(如 Ansible)批量部署 Filebeat
- 合理规划日志收集路径,避免收集不必要的日志
- 生产环境中建议启用 SSL/TLS 加密传输
- 监控 Filebeat 状态,确保日志收集服务正常运行
--------------------------------------------------------------------------
5、prometheus
Prometheus 部署步骤
1. 环境准备
1.1 系统要求
- 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
- 内存:最低 2GB RAM,生产环境建议 4GB+
- 磁盘:至少 10GB 可用空间(根据监控数据保留时间调整)
- 网络:需要访问被监控目标,默认端口 9090 需开放
2. 安装 Prometheus
2.1 下载 Prometheus
# 查看最新版本:https://prometheus.io/download/
PROM_VERSION=2.45.0
wget https://github.com/prometheus/prometheus/releases/download/v${PROM_VERSION}/prometheus-${PROM_VERSION}.linux-amd64.tar.gz
# 解压
tar -xzf prometheus-${PROM_VERSION}.linux-amd64.tar.gz
sudo mv prometheus-${PROM_VERSION}.linux-amd64 /usr/share/prometheus
2.2 创建专用用户
# 创建用户组和用户
sudo groupadd prometheus
sudo useradd -g prometheus -s /sbin/nologin prometheus
# 设置权限
sudo chown -R prometheus:prometheus /usr/share/prometheus
2.3 创建数据目录
sudo mkdir -p /var/lib/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus
3. 配置 Prometheus
3.1 创建系统服务
sudo vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/share/prometheus/prometheus \
--config.file=/usr/share/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus/ \
--web.console.templates=/usr/share/prometheus/consoles \
--web.console.libraries=/usr/share/prometheus/console_libraries \
--web.listen-address=0.0.0.0:9090
[Install]
WantedBy=multi-user.target
3.2 配置监控目标
sudo vi /usr/share/prometheus/prometheus.yml
global:
scrape_interval: 15s # 全局默认抓取间隔
evaluation_interval: 15s # 规则评估间隔
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
# 监控 Prometheus 自身
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# 示例:监控远程服务器节点 (node_exporter)
- job_name: 'node'
static_configs:
- targets: ['localhost:9100', 'remote-server-ip:9100']
# 示例:监控 Docker 容器
- job_name: 'docker'
static_configs:
- targets: ['localhost:9323']
4. 启动 Prometheus
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动 Prometheus
sudo systemctl start prometheus
# 设置开机自启
sudo systemctl enable prometheus
# 检查状态
sudo systemctl status prometheus
5. 安装 Node Exporter(监控服务器资源)
# 下载 Node Exporter
NODE_EXPORTER_VERSION=1.6.1
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
# 解压
tar -xzf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
sudo mv node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64/node_exporter /usr/local/bin/
# 创建服务
sudo vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
6. 验证部署
6.1 访问 Prometheus 界面
http://your-server-ip:9090
6.2 检查目标状态
- 在 Prometheus 界面点击 "Status" -> "Targets"
- 确认配置的目标状态为 "UP"
6.3 执行简单查询
- 点击 "Graph" 进入查询界面
- 输入查询表达式,例如
node_cpu_seconds_total
- 点击 "Execute" 查看结果
7. 常用配置
7.1 配置数据保留时间
# 在 prometheus.service 中添加
--storage.tsdb.retention.time=30d # 保留 30 天数据
7.2 配置告警规则
sudo vi /usr/share/prometheus/alert_rules.yml
groups:
- name: example
rules:
- alert: HighCpuUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on {{ $labels.instance }}"
description: "CPU usage is above 80% for 5 minutes (current value: {{ $value }})"
prometheus.yml
中引用规则文件:
rule_files:
- "alert_rules.yml"
8. 卸载 Prometheus
# 停止服务
sudo systemctl stop prometheus
sudo systemctl stop node_exporter
sudo systemctl disable prometheus
sudo systemctl disable node_exporter
# 删除文件
sudo rm -rf /usr/share/prometheus
sudo rm -rf /var/lib/prometheus
sudo rm -f /usr/local/bin/node_exporter
sudo rm -f /etc/systemd/system/prometheus.service
sudo rm -f /etc/systemd/system/node_exporter.service
# 删除用户和组
sudo userdel prometheus
sudo groupdel prometheus
9. 注意事项
- 生产环境中建议为 Prometheus 配置持久化存储
- 根据监控规模调整存储容量和保留策略
- 考虑使用 Prometheus 联邦部署来监控大规模环境
- 结合 Grafana 进行更丰富的数据可视化
- 配置适当的备份策略,防止监控数据丢失
--------------------------------------------------------------------------
6、Node Exporter
Node Exporter 部署步骤
1. 环境准备
1.1 系统要求
- 支持的操作系统:Linux、Windows、macOS、FreeBSD 等
- 轻量级资源需求:通常占用不到 10MB 内存
- 已部署 Prometheus(用于收集 Node Exporter 暴露的指标)
- 网络:默认端口 9100 需开放,供 Prometheus 抓取数据
2. 安装 Node Exporter
2.1 下载 Node Exporter
# 查看最新版本:https://github.com/prometheus/node_exporter/releases
NODE_EXPORTER_VERSION=1.6.1
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
2.2 解压并安装
# 解压
tar -xzf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
# 移动二进制文件到系统路径
sudo mv node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64/node_exporter /usr/local/bin/
# 验证安装
node_exporter --version
2.3 创建专用用户
# 创建用户组和用户(不允许登录系统)
sudo groupadd --system prometheus
sudo useradd --system --no-create-home --shell /bin/false --gid prometheus prometheus
3. 配置 Node Exporter
3.1 创建系统服务
sudo vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter for Prometheus
Documentation=https://prometheus.io/docs/guides/node-exporter/
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
# 基本启动命令
ExecStart=/usr/local/bin/node_exporter \
--collector.systemd \
--collector.systemd.unit-whitelist="(docker|sshd|nginx|prometheus|node_exporter).service" \
--collector.processes \
--collector.netclass \
--collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($$|/)"
[Install]
WantedBy=multi-user.target
--collector.systemd
:启用 systemd 服务监控--collector.systemd.unit-whitelist
:指定需要监控的 systemd 服务--collector.processes
:启用进程监控--collector.netclass
:启用网络设备监控--collector.filesystem.ignored-mount-points
:忽略不需要监控的文件系统
3.2 启用额外收集器(可选)
# 示例:启用更多收集器
ExecStart=/usr/local/bin/node_exporter \
--collector.systemd \
--collector.processes \
--collector.tcpstat \
--collector.udpstat \
--collector.mountstats \
--collector.diskstats \
--collector.netdev \
--collector.filesystem
4. 启动 Node Exporter
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start node_exporter
# 设置开机自启
sudo systemctl enable node_exporter
# 检查服务状态
sudo systemctl status node_exporter
5. 验证部署
5.1 检查指标端点
# 查看暴露的指标
curl http://localhost:9100/metrics
node_
开头的指标,如 node_cpu_seconds_total
、node_memory_MemTotal_bytes
等。5.2 在浏览器中查看
http://your-server-ip:9100/metrics
,可以看到所有收集的指标。6. 配置 Prometheus 抓取 Node Exporter 数据
prometheus.yml
:
sudo vi /usr/share/prometheus/prometheus.yml
scrape_configs:
# 已有的配置...
# 添加 Node Exporter 监控任务
- job_name: 'node_exporter'
scrape_interval: 15s
static_configs:
- targets: ['localhost:9100'] # 本地 Node Exporter
# 如果有其他服务器,添加其 IP 和端口
# - targets: ['192.168.1.100:9100', '192.168.1.101:9100']
sudo systemctl restart prometheus
7. 在 Prometheus 中验证
- 访问 Prometheus 界面:
http://prometheus-server-ip:9090
- 点击 "Status" -> "Targets"
- 确认
node_exporter
任务下的目标状态为 "UP"
8. 卸载 Node Exporter
# 停止服务
sudo systemctl stop node_exporter
sudo systemctl disable node_exporter
# 删除文件
sudo rm -f /usr/local/bin/node_exporter
sudo rm -f /etc/systemd/system/node_exporter.service
# 如果不再需要 prometheus 用户组,可以删除
# sudo userdel prometheus
# sudo groupdel prometheus
9. 注意事项
- 确保 Node Exporter 与 Prometheus 版本兼容(通常新版本向后兼容)
- 只启用需要的收集器,避免不必要的资源消耗
- 生产环境中建议限制 Node Exporter 端口的访问,只允许 Prometheus 服务器访问
- 对于大规模部署,考虑使用配置管理工具(如 Ansible)批量部署
- 结合 Grafana 和预设的 Node Exporter 仪表板,可以实现更直观的可视化
--------------------------------------------------------------------------
7、telegraf
Telegraf 部署步骤
1. 环境准备
1.1 系统要求
- 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
- 内存:最低 512MB RAM,生产环境建议 1GB+
- 磁盘:至少 100MB 可用空间
- 网络:根据需要开放相关端口,默认无固定端口
2. 安装 Telegraf
2.1 下载 Telegraf
# 查看最新版本:https://portal.influxdata.com/downloads/
TELEGRAF_VERSION=1.27.4
wget https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
2.2 解压并安装
# 解压
tar -xzf telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
# 移动到系统目录
sudo mv telegraf-${TELEGRAF_VERSION} /usr/share/telegraf
# 创建软链接便于访问
sudo ln -s /usr/share/telegraf/usr/bin/telegraf /usr/local/bin/telegraf
# 验证安装
telegraf --version
2.3 创建专用用户
# 创建用户组和用户
sudo groupadd telegraf
sudo useradd -g telegraf -s /sbin/nologin telegraf
# 设置权限
sudo chown -R telegraf:telegraf /usr/share/telegraf
3. 配置 Telegraf
3.1 创建配置文件
# 创建配置目录
sudo mkdir -p /etc/telegraf
# 生成默认配置文件
sudo telegraf config > /etc/telegraf/telegraf.conf
# 设置权限
sudo chown telegraf:telegraf /etc/telegraf/telegraf.conf
3.2 创建系统服务
sudo vi /etc/systemd/system/telegraf.service
[Unit]
Description=Telegraf Data Collector
Documentation=https://docs.influxdata.com/telegraf/
After=network.target
[Service]
User=telegraf
Group=telegraf
ExecStart=/usr/local/bin/telegraf --config /etc/telegraf/telegraf.conf
Restart=always
[Install]
WantedBy=multi-user.target
3.3 配置输入和输出插件
sudo vi /etc/telegraf/telegraf.conf
3.3.1 配置输入插件(收集数据)
# 系统指标收集
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.mem]]
[[inputs.net]]
# 可以根据需要添加更多输入插件
[[inputs.system]]
[[inputs.processes]]
[[inputs.kernel]]
3.3.2 配置输出插件(发送数据)
# 输出到 InfluxDB
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "telegraf"
retention_policy = ""
timeout = "5s"
username = ""
password = ""
user_agent = "telegraf"
# 同时输出到 Prometheus(可选)
[[outputs.prometheus_client]]
listen = ":9273"
metric_version = 2
retention_time = "0s"
4. 启动 Telegraf
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start telegraf
# 设置开机自启
sudo systemctl enable telegraf
# 检查服务状态
sudo systemctl status telegraf
5. 验证部署
5.1 检查服务状态
sudo systemctl status telegraf
5.2 查看日志
sudo journalctl -u telegraf -f
5.3 测试配置
telegraf --config /etc/telegraf/telegraf.conf --test
6. 常用插件配置
6.1 监控 Nginx
[[inputs.nginx]]
urls = ["http://localhost/status"]
timeout = "5s"
username = ""
password = ""
6.2 监控 Docker
[[inputs.docker]]
endpoint = "unix:///var/run/docker.sock"
container_names = []
timeout = "5s"
perdevice = true
total = false
docker_label_include = []
docker_label_exclude = []
6.3 监控 MySQL
[[inputs.mysql]]
servers = ["user:password@tcp(localhost:3306)/?tls=false"]
metric_version = 2
perf_events_statements_digest_text_limit = 120
perf_events_statements_limit = 250
table_schema_databases = []
gather_process_list = true
gather_info_schema_auto_inc = true
7. 卸载 Telegraf
# 停止服务
sudo systemctl stop telegraf
sudo systemctl disable telegraf
# 删除文件
sudo rm -rf /usr/share/telegraf
sudo rm -f /usr/local/bin/telegraf
sudo rm -rf /etc/telegraf
sudo rm -f /etc/systemd/system/telegraf.service
# 删除用户和组
sudo userdel telegraf
sudo groupdel telegraf
8. 注意事项
- 根据需要选择输入插件,避免启用不必要的插件消耗资源
- 对于大规模部署,考虑使用配置管理工具批量部署和管理
- 生产环境中建议为 Telegraf 配置适当的资源限制
- 定期更新 Telegraf 到最新版本以获取新功能和安全修复
- 监控 Telegraf 自身的运行状态,确保数据收集服务稳定
--------------------------------------------------------------------------
8、grafana
Telegraf 部署步骤
1. 环境准备
1.1 系统要求
- 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
- 内存:最低 512MB RAM,生产环境建议 1GB+
- 磁盘:至少 100MB 可用空间
- 网络:根据需要开放相关端口,默认无固定端口
2. 安装 Telegraf
2.1 下载 Telegraf
# 查看最新版本:https://portal.influxdata.com/downloads/
TELEGRAF_VERSION=1.27.4
wget https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
2.2 解压并安装
# 解压
tar -xzf telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
# 移动到系统目录
sudo mv telegraf-${TELEGRAF_VERSION} /usr/share/telegraf
# 创建软链接便于访问
sudo ln -s /usr/share/telegraf/usr/bin/telegraf /usr/local/bin/telegraf
# 验证安装
telegraf --version
2.3 创建专用用户
# 创建用户组和用户
sudo groupadd telegraf
sudo useradd -g telegraf -s /sbin/nologin telegraf
# 设置权限
sudo chown -R telegraf:telegraf /usr/share/telegraf
3. 配置 Telegraf
3.1 创建配置文件
# 创建配置目录
sudo mkdir -p /etc/telegraf
# 生成默认配置文件
sudo telegraf config > /etc/telegraf/telegraf.conf
# 设置权限
sudo chown telegraf:telegraf /etc/telegraf/telegraf.conf
3.2 创建系统服务
sudo vi /etc/systemd/system/telegraf.service
[Unit]
Description=Telegraf Data Collector
Documentation=https://docs.influxdata.com/telegraf/
After=network.target
[Service]
User=telegraf
Group=telegraf
ExecStart=/usr/local/bin/telegraf --config /etc/telegraf/telegraf.conf
Restart=always
[Install]
WantedBy=multi-user.target
3.3 配置输入和输出插件
sudo vi /etc/telegraf/telegraf.conf
3.3.1 配置输入插件(收集数据)
# 系统指标收集
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.mem]]
[[inputs.net]]
# 可以根据需要添加更多输入插件
[[inputs.system]]
[[inputs.processes]]
[[inputs.kernel]]
3.3.2 配置输出插件(发送数据)
# 输出到 InfluxDB
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "telegraf"
retention_policy = ""
timeout = "5s"
username = ""
password = ""
user_agent = "telegraf"
# 同时输出到 Prometheus(可选)
[[outputs.prometheus_client]]
listen = ":9273"
metric_version = 2
retention_time = "0s"
4. 启动 Telegraf
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start telegraf
# 设置开机自启
sudo systemctl enable telegraf
# 检查服务状态
sudo systemctl status telegraf
5. 验证部署
5.1 检查服务状态
sudo systemctl status telegraf
5.2 查看日志
sudo journalctl -u telegraf -f
5.3 测试配置
telegraf --config /etc/telegraf/telegraf.conf --test
6. 常用插件配置
6.1 监控 Nginx
[[inputs.nginx]]
urls = ["http://localhost/status"]
timeout = "5s"
username = ""
password = ""
6.2 监控 Docker
[[inputs.docker]]
endpoint = "unix:///var/run/docker.sock"
container_names = []
timeout = "5s"
perdevice = true
total = false
docker_label_include = []
docker_label_exclude = []
6.3 监控 MySQL
[[inputs.mysql]]
servers = ["user:password@tcp(localhost:3306)/?tls=false"]
metric_version = 2
perf_events_statements_digest_text_limit = 120
perf_events_statements_limit = 250
table_schema_databases = []
gather_process_list = true
gather_info_schema_auto_inc = true
7. 卸载 Telegraf
# 停止服务
sudo systemctl stop telegraf
sudo systemctl disable telegraf
# 删除文件
sudo rm -rf /usr/share/telegraf
sudo rm -f /usr/local/bin/telegraf
sudo rm -rf /etc/telegraf
sudo rm -f /etc/systemd/system/telegraf.service
# 删除用户和组
sudo userdel telegraf
sudo groupdel telegraf
8. 注意事项
- 根据需要选择输入插件,避免启用不必要的插件消耗资源
- 对于大规模部署,考虑使用配置管理工具批量部署和管理
- 生产环境中建议为 Telegraf 配置适当的资源限制
- 定期更新 Telegraf 到最新版本以获取新功能和安全修复
- 监控 Telegraf 自身的运行状态,确保数据收集服务稳定
Grafana 部署步骤
1. 环境准备
1.1 系统要求
- 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
- 内存:最低 1GB RAM,生产环境建议 2GB+
- 磁盘:至少 1GB 可用空间
- 已部署数据源(如 Prometheus、Elasticsearch 等,可选)
- 网络:默认端口 3000 需开放
2. 安装 Grafana
2.1 使用包管理器安装(推荐)
Ubuntu/Debian:
# 安装依赖
sudo apt-get install -y apt-transport-https software-properties-common wget
# 添加 GPG 密钥
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
# 添加仓库
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
# 安装 Grafana
sudo apt-get update
sudo apt-get install -y grafana
CentOS/RHEL:
# 添加仓库
sudo tee /etc/yum.repos.d/grafana.repo <<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
# 安装 Grafana
sudo yum install -y grafana
2.2 手动安装(可选)
# 查看最新版本:https://grafana.com/grafana/download
GRAFANA_VERSION=10.1.1
wget https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz
# 解压
tar -xzf grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz
sudo mv grafana-${GRAFANA_VERSION} /usr/share/grafana
3. 配置 Grafana
3.1 基本配置(包管理器安装)
- 主配置文件:
/etc/grafana/grafana.ini
- 数据存储目录:
/var/lib/grafana
- 日志目录:
/var/log/grafana
sudo vi /etc/grafana/grafana.ini
[server]
http_port = 3000
domain = your-domain.com
root_url = %(protocol)s://%(domain)s:%(http_port)s/
[security]
admin_password = your-secure-password # 初始管理员密码
[paths]
data = /var/lib/grafana
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
3.2 手动安装的服务配置
sudo vi /etc/systemd/system/grafana-server.service
[Unit]
Description=Grafana instance
Documentation=http://docs.grafana.org
Wants=network-online.target
After=network-online.target
[Service]
User=grafana
Group=grafana
Type=simple
ExecStart=/usr/share/grafana/bin/grafana-server \
--config=/usr/share/grafana/conf/defaults.ini \
--homepath=/usr/share/grafana \
--data=/var/lib/grafana \
--logs=/var/log/grafana \
--plugins=/var/lib/grafana/plugins
[Install]
WantedBy=multi-user.target
sudo groupadd grafana
sudo useradd -g grafana grafana
sudo mkdir -p /var/lib/grafana /var/log/grafana
sudo chown -R grafana:grafana /var/lib/grafana /var/log/grafana /usr/share/grafana
4. 启动 Grafana
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start grafana-server
# 设置开机自启
sudo systemctl enable grafana-server
# 检查状态
sudo systemctl status grafana-server
5. 初始化 Grafana
5.1 访问 Grafana 界面
http://your-server-ip:3000
5.2 首次登录
- 默认用户名:
admin
- 默认密码:
admin
6. 配置数据源
- 登录 Grafana 后,点击左侧菜单的 "Configuration"(齿轮图标)-> "Data Sources"
- 点击 "Add data source"
- 选择 "Prometheus"
- 在 "HTTP" 部分,设置 "URL" 为你的 Prometheus 地址(如
http://localhost:9090
) - 其他配置保持默认,点击底部的 "Save & Test"
- 看到 "Data source is working" 提示表示配置成功
7. 导入仪表盘
- 访问 Grafana 仪表盘库
- 找到需要的仪表盘(如 Node Exporter 相关的仪表盘 ID:1860)
- 在 Grafana 中,点击左侧菜单的 "Dashboards" -> "Import"
- 输入仪表盘 ID,点击 "Load"
- 选择之前配置的数据源,点击 "Import"
8. 验证部署
8.1 检查服务状态
sudo systemctl status grafana-server
8.2 查看日志
sudo tail -f /var/log/grafana/grafana.log
8.3 访问仪表盘
9. 常用操作
9.1 安装插件
# 安装示例:安装饼图插件
sudo grafana-cli plugins install grafana-piechart-panel
# 安装后需要重启 Grafana
sudo systemctl restart grafana-server
9.2 备份数据
/var/lib/grafana/grafana.db
(SQLite 数据库):# 备份数据库
sudo cp /var/lib/grafana/grafana.db /backup/grafana.db.$(date +%F)
10. 卸载 Grafana
# 停止服务
sudo systemctl stop grafana-server
sudo systemctl disable grafana-server
# 包管理器安装的卸载
# Ubuntu/Debian
sudo apt-get remove -y grafana
# CentOS/RHEL
sudo yum remove -y grafana
# 手动删除残留文件
sudo rm -rf /var/lib/grafana
sudo rm -rf /var/log/grafana
sudo rm -rf /etc/grafana
sudo rm -f /etc/systemd/system/grafana-server.service
# 删除用户和组
sudo userdel grafana
sudo groupdel grafana
11. 注意事项
- 生产环境中建议为 Grafana 配置 HTTPS
- 配置适当的用户权限和访问控制
- 定期备份 Grafana 数据库,防止配置丢失
- 对于大规模部署,考虑使用 Grafana 企业版或集群部署
- 监控 Grafana 自身的性能和可用性
--------------------------------------------------------------------------
9、consul
Consul 部署步骤
1. 环境准备
1.1 系统要求
- 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
- 内存:最低 512MB RAM,生产环境建议 1GB+
- 磁盘:至少 1GB 可用空间
- 网络:需要开放 8300(服务内部通信)、8301(LAN gossip)、8302(WAN gossip)、8500(HTTP API)、8600(DNS)端口
2. 安装 Consul
2.1 下载 Consul
# 查看最新版本:https://releases.hashicorp.com/consul/
CONSUL_VERSION=1.16.1
wget https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip
2.2 安装并配置
# 安装解压工具(如未安装)
sudo apt-get install unzip # Ubuntu/Debian
# 或
sudo yum install unzip # CentOS/RHEL
# 解压
unzip consul_${CONSUL_VERSION}_linux_amd64.zip
# 移动到系统路径
sudo mv consul /usr/local/bin/
# 验证安装
consul --version
2.3 创建专用用户
# 创建用户组和用户
sudo groupadd consul
sudo useradd -g consul -s /sbin/nologin -M consul
2.4 创建数据和配置目录
# 创建数据目录
sudo mkdir -p /var/lib/consul
sudo chown -R consul:consul /var/lib/consul
# 创建配置目录
sudo mkdir -p /etc/consul.d
sudo chown -R consul:consul /etc/consul.d
3. 配置 Consul
3.1 创建配置文件
sudo vi /etc/consul.d/consul.hcl
datacenter = "dc1"
data_dir = "/var/lib/consul"
client_addr = "0.0.0.0" # 允许外部访问
ui_config {
enabled = true # 启用 Web UI
}
server = true
bootstrap_expect = 1 # 单节点集群
log_level = "INFO"
datacenter = "dc1"
data_dir = "/var/lib/consul"
client_addr = "0.0.0.0"
ui_config {
enabled = true
}
server = true
bootstrap_expect = 3 # 期望的服务器节点数量
retry_join = ["192.168.1.101", "192.168.1.102", "192.168.1.103"] # 其他节点IP
log_level = "INFO"
3.2 创建系统服务
sudo vi /etc/systemd/system/consul.service
[Unit]
Description=Consul service mesh agent
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
[Service]
User=consul
Group=consul
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGINT
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
4. 启动 Consul
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start consul
# 设置开机自启
sudo systemctl enable consul
# 检查状态
sudo systemctl status consul
5. 验证部署
5.1 检查成员状态
consul members
alive
。5.2 访问 Web UI
http://your-server-ip:8500
,可以看到 Consul 的 Web 管理界面。5.3 测试 API
# 查看集群信息
curl http://localhost:8500/v1/catalog/nodes
6. 常用操作
6.1 注册服务
sudo vi /etc/consul.d/web.json
{
"service": {
"name": "web",
"id": "web-1",
"address": "127.0.0.1",
"port": 80,
"check": {
"http": "http://localhost:80/health",
"interval": "10s"
}
}
}
consul reload
6.2 查看服务
# 列出所有服务
consul catalog services
# 查看特定服务详情
consul catalog service web
6.3 备份和恢复
# 创建快照
consul snapshot save backup.snap
# 恢复快照
consul snapshot restore backup.snap
7. 卸载 Consul
# 停止服务
sudo systemctl stop consul
sudo systemctl disable consul
# 删除文件
sudo rm -f /usr/local/bin/consul
sudo rm -rf /var/lib/consul
sudo rm -rf /etc/consul.d
sudo rm -f /etc/systemd/system/consul.service
# 删除用户和组
sudo userdel consul
sudo groupdel consul
8. 注意事项
- 生产环境中建议部署 3 个或 5 个服务器节点以确保高可用性
- 启用 TLS 加密以保护通信安全
- 配置适当的访问控制策略
- 定期备份 Consul 数据
- 监控 Consul 集群健康状态,可使用 Prometheus + Grafana 组合
--------------------------------------------------------------------------
SkyWalking 部署步骤
1. 环境准备
1.1 系统要求
- 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)
- 内存:最低 4GB RAM,生产环境建议 8GB+
- 磁盘:至少 20GB 可用空间
- Java:OpenJDK 11+(SkyWalking OAP 服务需要)
- 可选数据库:Elasticsearch 7.x+/MySQL 8.x+/TiDB 等(用于存储监控数据)
1.2 验证 Java 环境
java -version
# CentOS
sudo yum install java-11-openjdk-devel -y
# Ubuntu
sudo apt install openjdk-11-jdk -y
2. 安装 SkyWalking
2.1 下载 SkyWalking
# 查看最新版本:https://skywalking.apache.org/downloads/
SKYWALKING_VERSION=9.7.0
wget https://archive.apache.org/dist/skywalking/${SKYWALKING_VERSION}/apache-skywalking-apm-${SKYWALKING_VERSION}.tar.gz
2.2 解压并安装
# 解压
tar -xzf apache-skywalking-apm-${SKYWALKING_VERSION}.tar.gz
# 移动到系统目录
sudo mv apache-skywalking-apm-${SKYWALKING_VERSION} /usr/share/skywalking
# 创建软链接便于版本管理
sudo ln -s /usr/share/skywalking /usr/share/skywalking-current
2.3 创建专用用户
# 创建用户组和用户
sudo groupadd skywalking
sudo useradd -g skywalking -s /sbin/nologin skywalking
# 设置权限
sudo chown -R skywalking:skywalking /usr/share/skywalking
3. 配置存储(以 Elasticsearch 为例)
3.1 配置 Elasticsearch 连接
sudo vi /usr/share/skywalking/config/application.yml
storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
namespace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:http}
connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
user: ${SW_ES_USER:elastic}
password: ${SW_ES_PASSWORD:your-elastic-password}
# 索引分片和副本配置
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1}
4. 配置系统服务
4.1 创建 OAP 服务
sudo vi /etc/systemd/system/skywalking-oap.service
[Unit]
Description=SkyWalking Observability Analysis Platform
Documentation=https://skywalking.apache.org/
After=network.target elasticsearch.service
[Service]
User=skywalking
Group=skywalking
Environment=JAVA_HOME=/usr/lib/jvm/jre-11-openjdk
Environment=SW_HOME=/usr/share/skywalking
ExecStart=/usr/share/skywalking/bin/oapService.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
4.2 创建 Web UI 服务
sudo vi /etc/systemd/system/skywalking-ui.service
[Unit]
Description=SkyWalking Web UI
Documentation=https://skywalking.apache.org/
After=network.target skywalking-oap.service
[Service]
User=skywalking
Group=skywalking
Environment=JAVA_HOME=/usr/lib/jvm/jre-11-openjdk
Environment=SW_HOME=/usr/share/skywalking
ExecStart=/usr/share/skywalking/bin/webappService.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
4.3 配置 Web UI(可选)
sudo vi /usr/share/skywalking/webapp/application.yml
server:
port: 8080 # 默认端口
spring:
cloud:
gateway:
routes:
- id: oap-route
uri: http://localhost:12800 # OAP 服务地址
predicates:
- Path=/graphql/**,/ui/**,/api/**,/analysis/**,/metrics/**,/log/**
5. 启动 SkyWalking
# 重新加载系统服务
sudo systemctl daemon-reload
# 启动 OAP 服务
sudo systemctl start skywalking-oap
sudo systemctl enable skywalking-oap
# 启动 Web UI 服务
sudo systemctl start skywalking-ui
sudo systemctl enable skywalking-ui
# 检查服务状态
sudo systemctl status skywalking-oap
sudo systemctl status skywalking-ui
6. 验证部署
6.1 查看日志
# 查看 OAP 服务日志
sudo tail -f /usr/share/skywalking/logs/oap-server.log
# 查看 Web UI 日志
sudo tail -f /usr/share/skywalking/logs/webapp.log
6.2 访问 Web UI
http://your-server-ip:8080
,可以看到 SkyWalking 的控制台界面。6.3 检查 OAP 服务状态
# 检查 OAP 健康检查接口
curl http://localhost:12800/health
{"status":"UP"}
7. 配置应用程序接入
7.1 准备 Agent 包
# Agent 目录
ls /usr/share/skywalking/agent
7.2 应用程序启动参数
-javaagent:/usr/share/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=your-service-name \
-Dskywalking.collector.backend_service=localhost:11800
java -javaagent:/usr/share/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=my-springboot-app \
-Dskywalking.collector.backend_service=localhost:11800 \
-jar your-application.jar
8. 卸载 SkyWalking
# 停止服务
sudo systemctl stop skywalking-oap
sudo systemctl stop skywalking-ui
sudo systemctl disable skywalking-oap
sudo systemctl disable skywalking-ui
# 删除文件
sudo rm -rf /usr/share/skywalking
sudo rm -rf /usr/share/skywalking-current
sudo rm -f /etc/systemd/system/skywalking-oap.service
sudo rm -f /etc/systemd/system/skywalking-ui.service
# 删除用户和组
sudo userdel skywalking
sudo groupdel skywalking
9. 注意事项
- 生产环境中建议单独部署 Elasticsearch 集群,并配置适当的存储策略
- 根据监控规模调整 OAP 服务的 JVM 内存参数(在
bin/oapService.sh
中修改) - 对于大规模部署,可考虑部署 OAP 集群以提高可用性
- 定期清理历史监控数据,避免存储容量不足
- 结合 SkyWalking 告警功能及时发现系统问题
--------------------------------------------------------------------------