Combate real | Identificar la construcción de monitoreo de enlace completo

Combate real | Identificar la construcción de monitoreo de enlace completo

Introducción a Pinpoint

Pinpoint es una herramienta APM para sistemas distribuidos a gran escala escrita en Java.A algunas personas también les gusta llamar a estas herramientas sistemas de cadena de llamadas y sistemas de seguimiento distribuido. Sabemos que el front-end inicia una solicitud de consulta al back-end, y el servicio de back-end puede llamar a varios servicios, y cada servicio puede llamar a otros servicios y, finalmente, devolver los resultados y resumirlos en la página. Si se produce una anomalía en un determinado enlace, es difícil para los ingenieros localizar con precisión la llamada de servicio que causó el problema. La función de las herramientas relacionadas como Pinpoint es rastrear el enlace de llamada completo de cada solicitud y recopilar el rendimiento de cada servicio en el enlace de llamada. Datos para que los ingenieros puedan localizar rápidamente los problemas. Dirección de Github: https://github.com/naver/pinpoint

El diagrama de arquitectura es el siguiente (la imagen proviene del sitio web oficial):
Combate real | Identificar la construcción de monitoreo de enlace completo

Descripción de la arquitectura:

  • Pinpoint-Collector: recopile varios datos de rendimiento

  • Pinpoint-Agent: una sonda asociada con la aplicación que está ejecutando

  • Pinpoint-Web: muestra los datos recopilados en forma de páginas WEB

  • Almacenamiento de HBase: los datos recopilados se almacenan en HBase

Construcción precisa

Aquí almacenamos los datos directamente en HDFS, por lo que el plan general es el siguiente:
Combate real | Identificar la construcción de monitoreo de enlace completo

Versión del software:
Combate real | Identificar la construcción de monitoreo de enlace completo

Instalar JDK

Descomprima el JDK en el directorio opt y configure las variables de entorno

tar xf jdk-8u131-linux-x64.tar.gz -C /opt

vim / etc / profile

export JAVA_HOME=/opt/jdk1.8.0_131

export PATH=$JAVA_HOME/bin:$PATH

Cargar variables de entorno

source /etc/profile

Configurar sin contraseña

Configure la confianza mutua entre los nodos 10.2.42.61, 10.2.42.62 y 10.2.42.63, que pueden operar tres al mismo tiempo.

ssh-keygen

ssh-copy-id 10.2.42.61

ssh-copy-id 10.2.42.62

ssh-copy-id 10.2.42.63

Si no hay ssh-copy-id, use el siguiente comando para instalar

yum -y install openssh-clients

Configurar la asignación de hosts

Es necesario configurar cinco hosts con mapeo de hosts.
vim / etc / hosts

10.2.42.61    DCA-APP-COM-pinpoint-HBaseMaster

10.2.42.62    DCA-APP-COM-pinpoint-HBaseSlave01

10.2.42.63    DCA-APP-COM-pinpoint-HBaseSlave02

Instalar el clúster del guardián del zoológico

Descomprima el paquete de instalación en el directorio opt, y los tres pueden operarse al mismo tiempo.

tar xf zookeeper-3.4.10.tar.gz -C /opt/

cd /opt/zookeeper-3.4.10/conf

cp zoo_sample.cfg zoo.cfg

Vine a zoo.cfg

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/data/zookeeper/data

# the port at which the clients will connect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

server.1=10.2.42.61:12888:13888

server.2=10.2.42.62:12888:13888

server.3=10.2.42.63:12888:13888

Crear directorio de datos

mkdir /data/zookeeper/data -p

Agregar ID de campaña en 10.2.42.61

echo 1 > /data/zookeeper/data/myid

Agregar ID de campaña en 10.2.42.62

echo 2 > /data/zookeeper/data/myid

Agregar ID de campaña en 10.2.42.63

echo 3 > /data/zookeeper/data/myid

Comienza el servicio

/opt/zookeeper-3.4.10/bin/zkServer.sh start

Ver el estado del clúster

[root@DCA-APP-COM-pinpoint-HBaseMaster data]# /opt/zookeeper-3.4.10/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: follower

Instalar el clúster de Hadoop

Combate real | Identificar la construcción de monitoreo de enlace completo
Descomprima el archivo de instalación en el directorio opt. Nota: Sin instrucciones especiales, las siguientes operaciones se realizan en tres máquinas al mismo tiempo.

tar xf hadoop-2.8.3.tar.gz -C /opt/

Ingrese al directorio del archivo de configuración de hadoop y configure

cd /opt/hadoop-2.8.3/etc/hadoop

Configure hadoop-env.sh, especifique el entorno operativo java
vim hadoop-env.sh de hadoop

#export JAVA_HOME=${JAVA_HOME}     # 默认就是这个,所以实际上这一步可以跳过

export JAVA_HOME=/opt/jdk1.8.0_131

Configure core-site.xml, especifique para acceder a la interfaz web de hadoop para acceder a
vim core-site.xml

<configuration>

  <property>

    <name>fs.defaultFS</name>

    <value>hdfs://10.2.42.61:9000</value>

  </property>

  <property>

  <name>io.file.buffer.size</name>

  <value>131072</value>

  </property>

  <property>

    <name>hadoop.tmp.dir</name>

    <value>/data/hadoop/tmp</value>

  </property>

</configuration>

Coloque hdfs-site.xml
vim hdfs-site.xml

<configuration>

<property>

  <name>dfs.namenode.secondary.http-address</name>

  <value>10.2.42.61:50090</value>

  </property>

  <property>

    <name>dfs.replication</name>

    <value>2</value>

  </property>

  <!-- 指定namenode数据存放临时目录,自行创建 -->

  <property>

    <name>dfs.namenode.name.dir</name>

    <value>file:/data/hadoop/dfs/name</value>

  </property>

  <!-- 指定datanode数据存放临时目录,自行创建 -->

  <property>

    <name>dfs.datanode.data.dir</name>

    <value>file:/data/hadoop/dfs/data</value>

  </property>

</configuration>

Configure mapred-site.xml, que es la configuración de tareas de mapreduce, y podrá ver el estado del trabajo completado.
vim mapred-site.xml

<configuration>

  <property>

    <name>mapreduce.framework.name</name>

      <value>yarn</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.address</name>

      <value>0.0.0.0:10020</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.webapp.address</name>

      <value>0.0.0.0:19888</value>

  </property>

</configuration>

Configure yarn-site.xml, datanode no necesita modificar este archivo de configuración.
vim yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

  <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

</property>

<property>

  <name>yarn.resourcemanager.address</name>

  <value>10.2.42.61:8032</value>

</property>

<property>

  <name>yarn.resourcemanager.scheduler.address</name>

  <value>10.2.42.61:8030</value> 

</property>

<property>

  <name>yarn.resourcemanager.resource-tracker.address</name>

  <value>10.2.42.61:8031</value> 

</property>

<property>

  <name>yarn.resourcemanager.admin.address</name>

  <value>10.2.42.61:8033</value> 

</property>

<property>

  <name>yarn.resourcemanager.webapp.address</name>

  <value>10.2.42.61:8088</value> 

</property>

</configuration>

Configure datanode para facilitar que namenode llame
esclavos vim

10.2.42.62

10.2.42.63

Crear directorio de datos

mkdir /data/hadoop/tmp -p

mkdir /data/hadoop/dfs/name -p

mkdir /data/hadoop/dfs/data -p

Formatee el nodo de nombre. Dado que
el sistema de archivos del nodo de nombre es HDFS, es necesario formatearlo.

/opt/hadoop-2.8.3/bin/hdfs namenode -format

Lo siguiente indica que el formateo se realizó correctamente.
Combate real | Identificar la construcción de monitoreo de enlace completo

Iniciar el clúster

/opt/hadoop-2.8.3/sbin/start-all.sh

El registro de salida es el siguiente:
Combate real | Identificar la construcción de monitoreo de enlace completo
inicie el servicio de historial de trabajos, verifique el estado de ejecución de mapreduce

/opt/hadoop-2.8.3/sbin/mr-jobhistory-daemon.sh start historyserver

Dirección a la que se accede mediante URL

http://10.2.42.61:50070  #整个hadoop 集群

http://10.2.42.61:50090  #SecondaryNameNode的情况

http://10.2.42.61:8088   #resourcemanager的情况

http://10.2.42.61:19888  #historyserver(MapReduce历史运行情况)

Combate real | Identificar la construcción de monitoreo de enlace completo

Configurar el clúster de HBase

Nota: No se hace ninguna declaración especial. Las siguientes operaciones se realizan en tres nodos al mismo tiempo.
**
Descomprima el paquete de instalación en el directorio opt

tar xf hbase-1.2.6-bin.tar.gz -C /opt/

Copie el archivo de configuración hdfs, esto es para asegurarse de que los archivos de configuración en ambos lados de hbase y hdfs sean consistentes

cp /opt/hadoop-2.8.3/etc/hadoop/hdfs-site.xml /opt/hbase-1.2.6/conf/

Configure el archivo de configuración de HBase
vim hbase-site.xml

<configuration>

  <property>

    <name>hbase.zookeeper.property.clientPort</name>

    <value>2181</value>

  </property>

  <property>

    <name>hbase.zookeeper.quorum</name>

    <value>10.2.42.61,10.2.42.62,10.2.42.63</value>

    <description>The directory shared by RegionServers.</description>

  </property>

  <property>

    <name>hbase.zookeeper.property.dataDir</name>

    <value>/data/zookeeper/zkdata</value>

    <description>

    注意这里的zookeeper数据目录与hadoop ha的共用,也即要与 zoo.cfg 中配置的一致

    Property from ZooKeeper config zoo.cfg.

    The directory where the snapshot is stored.

    </description>

  </property>

  <property>

    <name>hbase.rootdir</name>

    <value>hdfs://10.2.42.61:9000/hbase</value>

    <description>The directory shared by RegionServers.

                 官网多次强调这个目录不要预先创建,hbase会自行创建,否则会做迁移操作,引发错误

                 至于端口,有些是8020,有些是9000,看 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 里面的配置,本实验配置的是

                 dfs.namenode.rpc-address.hdcluster.nn1 , dfs.namenode.rpc-address.hdcluster.nn2

    </description>

  </property>

  <property>

    <name>hbase.cluster.distributed</name>

    <value>tre</value>

    <description>分布式集群配置,这里要设置为true,如果是单节点的,则设置为false

      The mode the cluster will be in. Possible values are

      false: standalone and pseudo-distributed setups with managed ZooKeeper

      true: fully-distributed with unmanaged ZooKeeper Quorum (see hbase-env.sh)

    </description>

  </property>

</configuration>

Configurar el archivo
regionervers vim regionervers

10.2.42.62

10.2.42.63

Configure hbase-env.sh. Dado que nosotros mismos construimos zookeeper, necesitamos agregar el siguiente fragmento de código.

export HBASE_MANAGES_ZK=false

Iniciar el clúster

/opt/hbase-1.2.6/bin/start-hbase.sh

Combate real | Identificar la construcción de monitoreo de enlace completo

Ver el estado del clúster
1. Ver mediante URL: http://10.2.42.61:16010/master-status
2. Ver mediante la línea de comandos

/opt/hbase-1.2.6/bin/hbase shell

hbase(main):002:0> status

1 active master, 0 backup masters, 1 servers, 0 dead, 2.0000 average load

Si se informa un error: ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master se está inicializando
1. Detenga HBase primero: /opt/hbase-1.2.6/bin/stop-hbase.sh
2. Inicie Regionserver: / opt / hbase- 1.2.6 / bin / hbase-daemon.sh iniciar el servidor de regiones
3. Iniciar el maestro: /opt/hbase-1.2.6/bin/hbase-daemon.sh iniciar el maestro

Inicialice la biblioteca PinPoint de HBase, es necesario descargar hbase-create.hbase.
La dirección es: https://github.com/naver/pinpoint/tree/master/hbase/scripts

/opt/hbase-1.2.6/bin/hbase shell /root/install/hbase-create.hbase

Combate real | Identificar la construcción de monitoreo de enlace completo

Configurar PinPoint-Collecter

Descomprima el paquete war en el directorio de aplicaciones web de tomcat

unzip pinpoint-collector-1.7.1.war -d /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT

Directorio de archivos de configuración /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes
modificar el archivo de configuración hbase.properties

hbase.client.host=10.2.42.61,10.2.42.62,10.2.42.63

hbase.client.port=2181

......

Modifique el archivo de configuración pinpoint-collector.properties

cluster.enable=true

cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63

......

flink.cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63

flink.cluster.zookeeper.sessiontimeout=3000

Iniciar tomcat

/home/tomcat/apache-tomcat-8.0.47/bin/startup.sh

Configurar PinPoint-WEB

Descomprima el paquete war correspondiente en el directorio webapps de tomcat

unzip pinpoint-web-1.7.1.war -d /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT

Directorio de archivos de configuración /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes
vim hbase.properties

hbase.client.host=10.2.42.61,10.2.42.62,10.2.42.63

hbase.client.port=2181

......

vim pinpoint-web.properties

cluster.enable=true

cluster.web.tcp.port=9997

cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63

cluster.zookeeper.sessiontimeout=30000

cluster.zookeeper.retry.interval=60000

.......

Iniciar tomcat

/home/tomcat/apache-tomcat-8.0.47/bin/startup.sh

Visite la URL: http://10.2.42.60:8080/#/main
Combate real | Identificar la construcción de monitoreo de enlace completo

Configurar la sonda

Copie pinpoint-agent-1.7.1.tar.gz en el servidor de aplicaciones y descomprímalo en el directorio tomcat

tar xf pinpoint-agent-1.7.1.tar.gz -C /home/tomcat

Modifique el archivo de configuración:
vim /home/tomcat/ppagent/pinpoint.config

# ip为pinpoint-collecter的服务器ip

profiler.collector.ip=10.2.42.59

Configure el script de inicio Catalina.sh de tomcat, agregue el siguiente código al script

CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar"

CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"

CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"

Si es un paquete jar, comience directamente con Java, debe seguir los siguientes parámetros

java -javaagent:/home/tomcat/tmp/ppagent/pinpoint-bootstrap-1.7.1.jar -Dpinpoint.agentId=jss-spring-boot-app11201 -Dpinpoint.applicationName=jss-spring-boot-app -jar jssSpringBootDemo-0.0.1-SNAPSHOT.jar

Reinicie Tomcat después de la configuración y luego verifique lo siguiente en el lado WEB:
Combate real | Identificar la construcción de monitoreo de enlace completo

Supongo que te gusta

Origin blog.51cto.com/15080014/2654775
Recomendado
Clasificación