this is very cool stuff, looking forward for the first release.

Best Regards!
---------------------

Luke Han


On Thu, Feb 6, 2020 at 7:27 PM Yaqian Zhang <[email protected]> wrote:

> Agree with xiaoxiang’s solution. I'm looking forward to this feature.
>
> 在 2020年2月6日,18:49,weibin zhu <[email protected]> 写道:
>
> Thanks for the reply, if everyone agrees with this solution, I can create
> a jira and implement the code. I suggest that can define the interface and
> framework code first. If you are interested, you can review it. If there is
> no problem, then implement the complete code.
> @ShaoFeng Shi, @zhoukang, @Xiaoxiang Yu
>
> ----------------------------------------
> weibin0516
>
> [email protected]
> http://rrd.me/fT6RW
> ----------------------------------------
>
> 在 2020年2月5日,下午11:19,Xiaoxiang Yu <[email protected]> 写道:
>
> Hi codingforfun and zhoukang,
>     I am agreed with codingforfun. Event, Listener, and ListenerBus, these
> components should be good abstraction/design for a monitor framework.
>     Recently I am checking source code of System Cube and Dashboard
> Service in apache kylin,  I have find some exist abstraction of these
> components(Event, Listener, and ListenerBus).
> We can find them under core-mertics module (
> https://github.com/apache/kylin/tree/master/core-metrics/src/main/java/org/apache/kylin/metrics/lib).
>  Maybe
> we can implement the webhook feature by extending this metrics framework
> other than reinventing the wheel. I am not very sure am I right but I guess
> it should works.
>     It is a draft version of and I extend some basic interface
> under core-mertics module, I think it not perfect at the moment, this is my
> patch
> https://github.com/hit-lacus/kylin/commit/db5b52ca81fd20b4bdd3328c90739373eba2adea
>  .
> I supposed my draft is intended to the beginning of the conversation, not
> the final implementation. If you have any comments, please let me know,
> thank you in advance.
>
>     To test it, use the following config in kylin.properties and
> kylinMetrics.xml.
>
> 1. kylin.properties
>     kylin.metrics.reporter-job-enabled=true
>     kylin.metrics.monitor-enabled=true
>
> 2. kylinMetrics.xml
> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>        xmlns="http://www.springframework.org/schema/beans";
>        xsi:schemaLocation="http://www.springframework.org/schema/beans
>
> http://www.springframework.org/schema/beans/spring-beans-3.1.xsd";>
>
>     <description>Kylin Metrics Related Configuration
> (SystemCube)</description>
>
>     <!-- A Reservoir which don't staged metrics message at all, emit it in
> no time. Maybe good for debug purpose.-->
>     <bean id="instantReservoir"
> class="org.apache.kylin.metrics.lib.impl.InstantReservoir"/>
>
>     <!-- A Reservoir which staged metrics message in memory, and emit them
> in fixed rate. -->
>     <bean id="blockingReservoir"
> class="org.apache.kylin.metrics.lib.impl.BlockingReservoir">
>         <!-- minReportSize, only if currently count of staged message
> exceed minReportSize, will Reservoir try to write message-->
>         <constructor-arg index="0">
>             <value>100</value>
>         </constructor-arg>
>
>         <!-- maxReportSize, max size of report in one time -->
>         <constructor-arg index="1">
>             <value>500</value>
>         </constructor-arg>
>
>         <!-- minReportTime, min duration(in minute) between two report
> action-->
>         <constructor-arg index="2">
>             <value>10</value>
>         </constructor-arg>
>     </bean>
>
>     <bean id="hiveSink"
> class="org.apache.kylin.metrics.lib.impl.hive.HiveSink"/>
>     <bean id="kafkaSink"
> class="org.apache.kylin.metrics.lib.impl.kafka.KafkaSink"/>
>
>     <bean id="initMetricsManager"
> class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
>         <property name="targetClass"
> value="org.apache.kylin.metrics.MetricsManager"/>
>         <property name="targetMethod" value="initMetricsManager"/>
>         <property name="arguments">
>             <list>
>                 <!--
>                 Sink of System Cube.
>                 -->
>                 <ref bean="hiveSink"/>
>
>                 <!--
>                 Bind properties for each ActiveReservoirReporter.
>                 -->
>                 <map
> key-type="org.apache.kylin.metrics.lib.ActiveReservoir"
> value-type="java.util.List">
>
>                     <!-- Each ActiveReservoir can have multi
> ReservoirReporter -->
>                     <entry key-ref="instantReservoir">
>                         <list>
>                             <bean
> class="org.apache.kylin.common.util.Pair">
>                                 <!-- Implementation of ReservoirReporter-->
>                                 <property name="first"
>
> value="org.apache.kylin.metrics.lib.impl.kafka.KafkaReservoirReporter"/>
>                                 <!-- Properties for specific
> ReservoirReporter-->
>                                 <property name="second">
>                                     <props>
>                                         <prop
> key="bootstrap.servers">cdh-master:9092,cdh-worker-1:9092,cdh-worker-2:9092</prop>
>                                     </props>
>                                 </property>
>                             </bean>
>
>                             <bean
> class="org.apache.kylin.common.util.Pair">
>                                 <!-- Implementation of ReservoirReporter-->
>                                 <property name="first"
>
> value="org.apache.kylin.metrics.lib.impl.callback.CallbackActiveReservoirReporter"/>
>                                 <!-- Properties for specific
> ReservoirReporter-->
>                                 <property name="second">
>                                     <props>
>                                         <prop
> key="callback.url">localhost:8888</prop>
>                                     </props>
>                                 </property>
>                             </bean>
>                         </list>
>                     </entry>
>                 </map>
>             </list>
>         </property>
>     </bean>
> </beans>
>
>
>
>
> --
> *Best wishes to you ! *
> *From :**Xiaoxiang Yu*
>
> At 2020-02-05 10:03:13, "codingforfun" <[email protected]> wrote:
>
> I think we can refer to the implementation of spark listener, a few key
> points are as follows:
> 1. Define interface ListenerEvent, which can implement specific events.
> Examples of which build cubes are CubeBuildStart, CubeBuildStepXStart,
> CubeBuildStepXEnd, CubeBuildEnd. These specific classes can contain a lot
> of information, such as owner, success/failed, error msg, resource
> occupation, etc
> 2. Define interface Listener, which contains the monitoring of all events.
> When the user defines the Listener, some events can be selectively
> implemented as needed, for example, onCubeBuildStart and CubeBuildEnd can
> be implemented to obtain the time cost.
> 3. Define a ListenerBus that provides the ability to register listeners(by
> configured custom listener class names), receive events, and dispatch
> events to the appropriate Listener in the background
>
>
>
> 在 2020年2月4日 11:17,ShaoFeng Shi <[email protected]>写道:
>
> Good proposal. Is there some standard and popular framework for this? We
> can integrate with the best solution there.
>
> Best regards,
>
> Shaofeng Shi 史少锋
> Apache Kylin PMC
> Email: [email protected]
>
> Apache Kylin FAQ: https://kylin.apache.org/docs/gettingstarted/faq.html
> Join Kylin user mail group: [email protected]
> Join Kylin dev mail group: [email protected]
>
>
>
>
> Liukaige <[email protected]> 于2020年1月25日周六 上午1:01写道:
>
>> Totally agreed. And this feature can be integrated with ETL scheduling,
>> data governance, approval flow etc. Brilliant idea. If you need any help,
>> count me in.
>>
>> 朱卫斌 <[email protected]> 于2020年1月20日周一 下午10:10写道:
>>
>>> I think there should be a set of kylin's event, metrics mechanism,
>>> event-driven, provide event, metrics interfaces, we can implement specific
>>> listeners in the form of plugins. For example, we can implement dingtalk
>>> plugin, SMS plugin or any other plugin, which has a high Flexibility (Not
>>> only do notifications, but also do many things, such as unifying and even
>>> interfering with the task.). We can refer to the design and implementation
>>> of spark event and metrics.
>>> I think this is very valuable, we can do it together.
>>>
>>> weibin0516
>>> [email protected]
>>> Best wishes !
>>>
>>> <https://maas.mail.163.com/dashi-web-extend/html/proSignature.html?ftlId=1&name=weibin0516&uid=codingforfun%40126.com&iconUrl=https%3A%2F%2Fmail-online.nosdn.127.net%2Fwzpmmc%2F54c20faa3a1910ad49f4a5f1965fba47.jpg&items=%5B%22codingforfun%40126.com%22%2C%22Best+wishes+%21%22%5D>
>>> 签名由 网易邮箱大师 <https://mail.163.com/dashi/dlpro.html?from=mail81> 定制
>>>
>>> On 01/21/2020 10:57,Xiaoxiang Yu<[email protected]> <[email protected]>
>>> wrote:
>>>
>>> It looks good, and it should be useful for IT team, please go ahead!
>>>
>>>
>>> --
>>> *Best wishes to you ! *
>>> *From :**Xiaoxiang Yu*
>>>
>>> At 2020-01-20 19:58:40, "Zhou Kang" <[email protected]> wrote:
>>>
>>> Hi Kylin users & developers:
>>>
>>>
>>>
>>>        Many apps support webhook, it is one way that apps can send
>>> automated messages or information to other apps.
>>>
>>>        Use webhook, I think we can send messages to chat tools(slack,
>>> dingding), send sms , trigger another workflow.
>>>
>>>        Do we need to add webhook to Kylin? Such as when cubing job
>>> finished.
>>>
>>>        What do you think about this, and which is the better way in your
>>> environment ?
>>>
>>>
>>
>> --
>> Best regards,
>>
>> Kaige Liu(刘凯歌)
>>
>> *"Do small things with great love." *
>>
>
>
>

Reply via email to