apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev git -ymkdir /applicationtar xf Python-3.13.7.tgzcd Python-3.13.7./configure --prefix=/application/Python-3.13.7make all -j 2make installln -s /application/Python-3.13.7 /application/pythonln -s /application/python/bin/python3.13 /usr/bin/python3.13ln -s /application/python/bin/pip3.13 /usr/bin/pip3.13
cd /softpython3.13 -m venv elastalert-venvsource elastalert-venv/bin/activate
git clone https://github.com/jertel/elastalert2.gitcd elastalert2python3.13 -m pip install --upgrade pip setuptools wheel -i https://pypi.tuna.tsinghua.edu.cn/simplepip3.13 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
python3.13 -m pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple
mkdir -p /etc/elastalert/rulesvi /etc/elastalert/config.yaml
es_host: 192.168.10.219 es_port: 9200use_ssl: false verify_certs: true
es_username: "elastic"es_password: "123456"
writeback_index: elastalert
run_every: minutes: 1
buffer_time: minutes: 15
timezone: Asia/Shanghai
rules_folder: /etc/elastalert/rules
vi /etc/elastalert/rules/nginx.yamlname: "Nginx 404 频率告警"type: "frequency"index: "nginx-*"is_enabled: truenum_events: 50 timeframe: minutes: 15realert: minutes: 5 timestamp_field: "@timestamp"timestamp_type: "iso"use_strftime_index: falsealert_text_type: alert_text_onlyquery_key: "client_ip"aggregate_by_key: true alert_text: | 🚨 Nginx 404 频繁告警 时间: {0} 客户端IP: {1} 15钟内累计触发次数: {2} 日志索引: {3} 日志信息: {4}alert_text_args: - "@timestamp" - "client_ip" - num_hits - index - message filter: - term: status: "404"
alert: - "dingtalk"dingtalk_access_token: "token后面的那段"dingtalk_msgtype: "text"
elastalert-test-rule --config /etc/elastalert/config.yaml /etc/elastalert/rules/nginx.yaml
/soft/elastalert-venv/bin/elastalert --config /etc/elastalert/config.yaml --verbose
vi /etc/systemd/system/elastalert.service[Unit]Description=ElastAlert ServiceAfter=network.target elasticsearch.serviceWants=elasticsearch.service[Service]Type=simpleUser=rootGroup=rootWorkingDirectory=/soft/elastalert2Environment="PATH=/soft/elastalert-venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"ExecStart=/soft/elastalert-venv/bin/elastalert --config /etc/elastalert/config.yaml --verboseRestart=alwaysRestartSec=10StandardOutput=append:/var/log/elastalert.logStandardError=append:/var/log/elastalert.log[Install]WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable elastalert.service
systemctl start elastalert.service
systemctl status elastalert.service