FlieBeat & Kafka & Clickhouse reemplazan a ELK serie uno

antecedentes

Los servicios SaaS se enfrentarán a la seguridad de los datos, el cumplimiento y otros problemas en el futuro. El negocio de la empresa necesita acumular un conjunto de capacidades de implementación de privatización para ayudar al negocio a mejorar la competitividad de su industria. Para mejorar las capacidades del sistema de la plataforma, necesitamos acumular un conjunto de sistemas de datos para ayudar a analizar el efecto de las operaciones y mejorar las capacidades operativas. Sin embargo, en el proceso de desarrollo real, si un sistema de big data se implementa directamente, será una sobrecarga de servidor relativamente grande para los usuarios. Con este fin, elegimos una solución de compromiso para mejorar nuestras capacidades de análisis de datos.

búsqueda elástica vs casa de clics

ClickHouse es un sistema de gestión de bases de datos distribuidas en columnas de alto rendimiento. Probamos ClickHouse y descubrimos que tiene las siguientes ventajas:

ClickHouse tiene un gran rendimiento de escritura. El volumen de escritura de registros de un solo servidor oscila entre 50 MB y 200 MB/s, y la cantidad de registros escritos por segundo supera los 60 W, que es más de 5 veces mayor que la de ES. La escritura rechazada más común en ES conduce a la pérdida de datos, retrasos en la escritura y otros problemas, que no son fáciles de ocurrir en ClickHouse.

La velocidad de consulta es rápida. Se afirma oficialmente que los datos están en el caché de página, y la velocidad de consulta de un solo servidor es de aproximadamente 2-30 GB/s; sin el caché de página, la velocidad de consulta depende de la velocidad de lectura del disco y la tasa de compresión de los datos. Después de las pruebas, la velocidad de consulta de ClickHouse es entre 5 y 30 veces más rápida que la de ES.

ClickHouse cuesta menos que el servidor ES. Por un lado, la relación de compresión de datos de ClickHouse es más alta que la de ES, y el espacio en disco ocupado por los mismos datos es solo 1/3 a 1/30 del de ES, lo que ahorra espacio en disco y reduce efectivamente la E/S del disco. , que también es más eficiente para consultas de ClickHouse. Una de las razones es que, por otro lado, ClickHouse ocupa menos memoria y consume menos recursos de CPU que ES. Estimamos que el procesamiento de registros con ClickHouse puede reducir los costos del servidor a la mitad.

imagen.png

Funciones de soporte\Proyectos de código abierto ElasticSearch ClickHouse
Preguntar Java c++
tipo de almacenamiento almacenamiento de documento base de datos columnar
Soporte distribuido Se admiten tanto la fragmentación como las réplicas. Se admiten tanto la fragmentación como las réplicas.
Extensibilidad alto Bajo
velocidad de escritura lento rápido
Uso de CPU/memoria alto Bajo
Ocupación de almacenamiento (importación de datos de registro 54G) Alto 94G (174%) Bajo 23G (42,6%)
Velocidad de consulta de coincidencia exacta en general rápido
Velocidad de consulta de coincidencia aproximada rápido lento
gestión de autoridad apoyo apoyo
Dificultad de consulta Bajo alto
soporte de visualización alto Bajo
Casos de uso un monton de Ctrip
dificultad de mantenimiento Bajo alto

análisis de costos

Nota: en ausencia de cualquier descuento, basado en el análisis de aliyun

costo del producto estándar costo ilustrar Coste total
grupo de cuidadores del zoológico 2 core 4g computación compartida n4 50G SSD disco en la nube 222/mes  3 alta disponibilidad 666/mes
grupo kafka 4 núcleos 8g estándar compartido s650G SSD disco en la nube 300G disco de datos 590/mes 3 alta disponibilidad 1770/mes
implementación de latidos de archivos Las aplicaciones relacionadas con la ubicación conjunta generarán una cierta cantidad de sobrecarga de memoria y disco, lo que tendrá un cierto impacto en la disponibilidad de las aplicaciones.
casa de clics  16-core 32g computación compartida n450G SSD disco en la nube 1000G disco de datos 2652/mes 2 alta disponibilidad 5304/mes
Coste total 7740/mes

Despliegue del entorno

implementación del clúster zookeeper

prueba2.png


yum install java-1.8.0-openjdk-devel.x86_64
/etc/profile 配置环境变量
更新系统时间
yum install  ntpdate
ntpdate asia.pool.ntp.org

mkdir zookeeper
mkdir ./zookeeper/data
mkdir ./zookeeper/logs

wget  --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zvxf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/zookeeper

export ZOOKEEPER_HOME=/usr/zookeeper/apache-zookeeper-3.7.1-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH

进入ZooKeeper配置目录
cd $ZOOKEEPER_HOME/conf

新建配置文件
vi zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/data
dataLogDir=/usr/zookeeper/logs
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888

在每台服务器上执行,给zookeeper创建myid
echo "1" > /usr/zookeeper/data/myid
echo "2" > /usr/zookeeper/data/myid
echo "3" > /usr/zookeeper/data/myid

进入ZooKeeper bin目录
cd $ZOOKEEPER_HOME/bin
sh zkServer.sh start

Implementación de clústeres de Kafka

mkdir -p /usr/kafka
chmod 777 -R /usr/kafka
wget  --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.2.0/kafka_2.12-3.2.0.tgz
tar -zvxf kafka_2.12-3.2.0.tgz -C /usr/kafka


不同的broker Id 设置不一样,比如 1,2,3
broker.id=1
listeners=PLAINTEXT://ip:9092
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dir=/usr/kafka/logs
num.partitions=5
num.recovery.threads.per.data.dir=3
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
zookeeper.connection.timeout.ms=30000
group.initial.rebalance.delay.ms=0

后台常驻进程启动kafka
nohup /usr/kafka/kafka_2.12-3.2.0/bin/kafka-server-start.sh /usr/kafka/kafka_2.12-3.2.0/config/server.properties   >/usr/kafka/logs/kafka.log >&1 &

/usr/kafka/kafka_2.12-3.2.0/bin/kafka-server-stop.sh

$KAFKA_HOME/bin/kafka-topics.sh --list --bootstrap-server  ip:9092

$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server ip:9092 --topic test --from-beginning

$KAFKA_HOME/bin/kafka-topics.sh  --create --bootstrap-server  ip:9092  --replication-factor 2 --partitions 3 --topic xxx_data

Implementación de FileBeat

sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

Create a file with a .repo extension (for example, elastic.repo) in your /etc/yum.repos.d/ directory and add the following lines:
在/etc/yum.repos.d/ 目录下创建elastic.repo

[elastic-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

yum install filebeat
systemctl enable filebeat
chkconfig --add filebeat

Descripción del archivo de configuración de FileBeat, hoyo 1 (es necesario configurar keys_under_root: verdadero). Si no configura los campos de mensaje de kafka de la siguiente manera:

prueba.png

文件目录: /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /root/logs/xxx/inner/*.log
  json:  
如果不设置该索性,所有的数据都存储在message里面,这样设置以后数据会平铺。
       keys_under_root: true 
output.kafka:
  hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
  topic: 'xxx_data_clickhouse'
  partition.round_robin:
            reachable_only: false
            required_acks: 1
            compression: gzip
processors: 
剔除filebeat 无效的字段数据
    - drop_fields:  
        fields: ["input", "agent", "ecs", "log", "metadata", "timestamp"]
        ignore_missing: false
        
nohup ./filebeat -e -c /etc/filebeat/filebeat.yml > /user/filebeat/filebeat.log & 
输出到filebeat.log文件中,方便排查

despliegue de clickhouse

prueba3.png

检查当前CPU是否支持SSE 4.2,如果不支持,需要通过源代码编译构建
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
返回 "SSE 4.2 supported" 表示支持,返回 "SSE 4.2 not supported" 表示不支持

创建数据保存目录,将它创建到大容量磁盘挂载的路径
mkdir -p /data/clickhouse
修改/etc/hosts文件,添加clickhouse节点
举例:
10.190.85.92 bigdata-clickhouse-01
10.190.85.93 bigdata-clickhouse-02

服务器性能参数设置:
cpu频率调节,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节,性能最好
echo 'performance' | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

内存调节,不要禁用 overcommit
echo 0 | tee /proc/sys/vm/overcommit_memory

始终禁用透明大页(transparent huge pages)。 它会干扰内存分配器,从而导致显着的性能下降
echo 'never' | tee /sys/kernel/mm/transparent_hugepage/enabled

首先,需要添加官方存储库:
yum install yum-utils
rpm --import <https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG>
yum-config-manager --add-repo <https://repo.clickhouse.tech/rpm/stable/x86_64>

查看clickhouse可安装的版本:
yum list | grep clickhouse
运行安装命令:
yum -y install clickhouse-server clickhouse-client

修改/etc/clickhouse-server/config.xml配置文件,修改日志级别为information,默认是trace
<level>information</level>
执行日志所在目录:

正常日志
/var/log/clickhouse-server/clickhouse-server.log
异常错误日志
/var/log/clickhouse-server/clickhouse-server.err.log

查看安装的clickhouse版本:
clickhouse-server --version
clickhouse-client --password

sudo clickhouse stop
sudo clickhouse tart
sudo clickhouse start

prueba5.png

Resumir

Todo el proceso de implementación ha pasado por muchos obstáculos, especialmente la configuración de parámetros de filebeat yml. La configuración de clickhouse muestra que actualizaré otro artículo para sincronizar los fosos que pisé en el proceso. Hace mucho tiempo que no actualizo mi blog y, a menudo, veo la pregunta de qué hacer después de que el blog cumpla 35 años. Para ser honesto, yo mismo no he pensado en qué hacer en el futuro. El núcleo es el aprendizaje y la producción continuos. Continúe construyendo su propio foso, ya sean expertos técnicos, expertos en negocios, arquitectura, administración, etc. Personalmente, sugiero que si puede continuar escribiendo código, debe luchar en primera línea, y la administración está completamente ligada a la empresa. A menos que sea una gran fábrica conocida, esta es otra mirada. Si la empresa para la que trabajo carece de una gran influencia en la industria, siento que puedo luchar en primera línea y elegir un nuevo trabajo en el futuro. Más consideración es la influencia de la industria, el sentido comercial y las capacidades de la arquitectura técnica. Ahora tengo 35 años y afronto el día a día con tranquilidad.

Supongo que te gusta

Origin juejin.im/post/7120880190003085320
Recomendado
Clasificación